PreserveSigAttribute クラス
アセンブリ: mscorlib (mscorlib.dll 内)
構文<ComVisibleAttribute(True)> _ <AttributeUsageAttribute(AttributeTargets.Method, Inherited:=False)> _ Public NotInheritable Class PreserveSigAttribute Inherits Attribute
[ComVisibleAttribute(true)] [AttributeUsageAttribute(AttributeTargets.Method, Inherited=false)] public sealed class PreserveSigAttribute : Attribute
[ComVisibleAttribute(true)] [AttributeUsageAttribute(AttributeTargets::Method, Inherited=false)] public ref class PreserveSigAttribute sealed : public Attribute
解説既定では、タイプ ライブラリ エクスポータ (Tlbexp.exe) によって、HRESULT に S_OK を返す呼び出しは、[out, retval] パラメータが関数の戻り値として使用されるように、変換されます。S_OK の HRESULT は破棄されます。HRESULT が S_OK 以外の場合、共通言語ランタイムは例外をスローして、[out, retval] パラメータを破棄します。PreserveSigAttribute をマネージ メソッドのシグネチャに適用した場合、属性が適用されたメソッドのマネージ シグネチャとアンマネージ シグネチャは同一になります。
メンバが複数の成功 HRESULT 値を返し、またその複数の値を検出する必要がある場合は、元のメソッドのシグネチャの保持が必要となります。ほとんどの COM メンバは HRESULT を 1 つ返すため、PreserveSigAttribute を適用することによって、成功またはエラーの HRESULT を表す整数値を取得できます。Tlbexp.exe はすべての [out, retval] パラメータをマネージ シグネチャに out パラメータとして保持します。
タイプ ライブラリ インポータ (Tlbimp.exe) もこの属性を適用します。Tlbimp.exe は、タイプ ライブラリをインポートするときにこの属性をディスパッチ インターフェイスに適用します。
メモ |
|---|
| COM からマネージ コードへの相互運用時に、マネージ コードが PreserveSigAttribute クラスでマークされていた場合、PreserveSigAttribute クラスでは、戻り値の Currency、Guid、および Object の型はサポートされません。これらの条件で、これらのいずれかの戻り値の型を PreserveSigAttribute クラスで使用すると、TypeLoadException がスローされます。 |
使用例アセンブリを COM タイプ ライブラリにエクスポートするときに、Tlbexp.exe が PreserveSigAttribute なしで C# メソッドを変換する場合の例を次に示します。
int DoSomething (long l);
アンマネージ シグネチャ :
HRESULT DoSomething ([in] long l, [out, retval] int * i);
PreserveSigAttribute を同じ C# メソッドに適用して、アセンブリをエクスポートした場合、メソッドの変換は前の例とは異なります。Tlbexp.exe は HRESULT および [out, retval] パラメータ修飾子を削除することに注目してください。
[PreserveSig] int DoSomething (long l);
アンマネージ シグネチャ :
int DoSomething ([in] long l);
継承階層System.Attribute
System.Runtime.InteropServices.PreserveSigAttribute
スレッド セーフ
プラットフォームWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照PreserveSigAttribute コンストラクタ
アセンブリ: mscorlib (mscorlib.dll 内)
構文
プラットフォームWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照PreserveSigAttribute プロパティ
PreserveSigAttribute メソッド
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Equals | オーバーロードされます。 ( Attribute から継承されます。) |
| GetCustomAttribute | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 ( Attribute から継承されます。) |
| GetCustomAttributes | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 ( Attribute から継承されます。) |
| GetHashCode | このインスタンスのハッシュ コードを返します。 ( Attribute から継承されます。) |
| GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
| IsDefaultAttribute | 派生クラス内でオーバーライドされたときに、このインスタンスの値が派生クラスの既定値かどうかを示します。 ( Attribute から継承されます。) |
| IsDefined | オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 ( Attribute から継承されます。) |
| Match | 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 ( Attribute から継承されます。) |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
| ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |
参照PreserveSigAttribute メンバ
COM 相互運用呼び出し中に発生する HRESULT または retval シグネチャ変換を中止することを示します。
PreserveSigAttribute データ型で公開されるメンバを以下の表に示します。
パブリック コンストラクタ
パブリック プロパティ
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Equals | オーバーロードされます。 ( Attribute から継承されます。) |
| GetCustomAttribute | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 (Attribute から継承されます。) |
| GetCustomAttributes | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 (Attribute から継承されます。) |
| GetHashCode | このインスタンスのハッシュ コードを返します。 (Attribute から継承されます。) |
| GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
| IsDefaultAttribute | 派生クラス内でオーバーライドされたときに、このインスタンスの値が派生クラスの既定値かどうかを示します。 (Attribute から継承されます。) |
| IsDefined | オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 (Attribute から継承されます。) |
| Match | 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (Attribute から継承されます。) |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
| ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |
参照- PreserveSigAttributeのページへのリンク
.gif)