PreserveSigAttribute クラスとは? わかりやすく解説

PreserveSigAttribute クラス

COM 相互運用呼び出し中に発生する HRESULT または retval シグネチャ変換中止することを示します

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
<AttributeUsageAttribute(AttributeTargets.Method, Inherited:=False)> _
Public NotInheritable Class
 PreserveSigAttribute
    Inherits Attribute
Dim instance As PreserveSigAttribute
[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
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute AttributeUsageAttribute(AttributeTargets.Method, Inherited=false)
 */ 
public final class PreserveSigAttribute extends
 Attribute
ComVisibleAttribute(true) 
AttributeUsageAttribute(AttributeTargets.Method, Inherited=false)
 
public final class PreserveSigAttribute extends
 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 クラスでは、戻り値CurrencyGuid、および Object の型はサポートされません。これらの条件で、これらのいずれか戻り値の型を PreserveSigAttribute クラス使用すると、TypeLoadException がスローさます。

使用例使用例

アセンブリCOM タイプ ライブラリエクスポートするときに、Tlbexp.exe が PreserveSigAttribute なしで C# メソッド変換する場合の例を次に示します

マネージ シグネチャ :

アンマネージ シグネチャ :

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.Object
   System.Attribute
    System.Runtime.InteropServices.PreserveSigAttribute
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PreserveSigAttribute メンバ
System.Runtime.InteropServices 名前空間
その他の技術情報
タイプ ライブラリ エクスポータ (Tlbexp.exe)
タイプ ライブラリ インポータ (Tlbimp.exe)



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「PreserveSigAttribute クラス」の関連用語

PreserveSigAttribute クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



PreserveSigAttribute クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS