PreserveSigAttribute PreserveSigAttribute PreserveSigAttribute PreserveSigAttribute Class


COM 相互運用呼び出し中に発生する HRESULT または retval シグネチャ変換を中止することを示します。Indicates that the HRESULT or retval signature transformation that takes place during COM interop calls should be suppressed.

public ref class PreserveSigAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class PreserveSigAttribute : Attribute
type PreserveSigAttribute = class
    inherit Attribute
Public NotInheritable Class PreserveSigAttribute
Inherits Attribute

次の例は、Tlbexp.exe がなく C# メソッドに変換する方法を示しています。PreserveSigAttributeアセンブリを COM タイプ ライブラリにエクスポートするときにします。The following example shows how Tlbexp.exe converts a C# method without PreserveSigAttribute when exporting an assembly to a COM type library.

マネージ シグネチャ。Managed signature:

int DoSomething (long l);  

アンマネージ シグネチャ。Unmanaged signature:

HRESULT DoSomething ([in] long l, [out, retval] int * i);  

適用するときにPreserveSigAttribute同じの C# のメソッドとアセンブリをエクスポートするメソッドの変換は、前の例は異なります。When you apply PreserveSigAttribute to the same C# method and export the assembly, the method conversion differs from the previous example. Tlbexp.exe を HRESULT と [out, retval] 削除ことに注意してくださいパラメーター修飾子。Notice that Tlbexp.exe removes the HRESULT and the [out, retval] parameter modifier.

マネージ シグネチャ。Managed signature:

[PreserveSig] int DoSomething (long l);  

アンマネージ シグネチャ。Unmanaged signature:

int DoSomething ([in] long l);  


メソッドには、この属性を適用できます。You can apply this attribute to methods.

既定で、 Tlbexp.exe (タイプ ライブラリ エクスポーター)を S_OK HRESULT を返す呼び出しを変換するように [out, retval] パラメーター、関数の戻り値として使用されます。By default, the Tlbexp.exe (Type Library Exporter) ensures that a call that returns an HRESULT of S_OK is transformed such that the [out, retval] parameter is used as the function return value. S_OK HRESULT は破棄されます。The S_OK HRESULT is discarded. S_OK 以外の Hresult のランタイムが例外をスローし、破棄 [out, retval] パラメーターです。For HRESULTs other than S_OK, the runtime throws an exception and discards the [out, retval] parameter. 適用すると、PreserveSigAttributeマネージ メソッドのシグネチャには、属性付きメソッドのマネージ コードとアンマネージ シグネチャは同じです。When you apply the PreserveSigAttribute to a managed method signature, the managed and unmanaged signatures of the attributed method are identical.

メンバーが 1 つ以上の成功 HRESULT 値を返すし、さまざまな値を検出したい場合は、元のメソッド シグネチャを保持と必要があります。Preserving the original method signature is necessary if the member returns more than one success HRESULT value and you want to detect the different values. COM メンバーのほとんどは、適用することで、HRESULT を返すため、 PreserveSigAttribute、成功または失敗を示す HRESULT を表す整数を取得することができます。Since most COM member return an HRESULT, by applying the PreserveSigAttribute, you can retrieve an integer representing the success or failure HRESULT. Tlbexp.exe 保持 [out, retval] として out パラメーターがマネージ シグネチャでのパラメーター。Tlbexp.exe preserves any [out, retval] parameters as out parameters in the managed signature.

Tlbimp.exe (タイプ ライブラリ インポーター)もこの属性を適用ディスパッチ インターフェイスに属性を適用、タイプ ライブラリをインポートするとき。The Tlbimp.exe (Type Library Importer) also applies this attribute; it applies the attribute to dispinterfaces when it imports a type library.


型を返すCurrencyGuid、およびObjectでサポートされていない、PreserveSigAttributeクラスの相互運用性が COM からマネージ コードに発生し、マネージ コードが付いたときに、PreserveSigAttributeクラス。Return types of Currency, Guid, and Object are not supported by the PreserveSigAttribute class when interoperation occurs from COM to managed code and the managed code is marked with the PreserveSigAttribute class. これらの戻り値の型のいずれかを使用しようとする、PreserveSigAttributeクラスは、これらの条件の中に、TypeLoadExceptionがスローされます。When you attempt to use one of these return types with the PreserveSigAttribute class during these conditions, a TypeLoadException is thrown.


PreserveSigAttribute() PreserveSigAttribute() PreserveSigAttribute() PreserveSigAttribute()

PreserveSigAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the PreserveSigAttribute class.


Equals(Object) Equals(Object) Equals(Object) Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)


_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(Inherited from Attribute)


TypeId TypeId TypeId TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)