PreserveSigAttribute 클래스

정의

COM interop 호출 중에 발생하는 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)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PreserveSigAttribute : Attribute
type PreserveSigAttribute = class
    inherit Attribute
Public NotInheritable Class PreserveSigAttribute
Inherits Attribute
상속
PreserveSigAttribute
특성

예제

다음 예제에서는 어셈블리를 COM 형식 라이브러리로 내보낼 때 C# tlbexp.exe가 PreserveSigAttribute 하지 않고 메서드를 변환 하는 방법을 보여 줍니다.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에 대 한 런타임 예외를 throw 하 고 [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.

멤버가 둘 이상 성공 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 멤버는 PreserveSigAttribute를 적용 하 여 HRESULT를 반환 하므로 성공 또는 실패 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 (형식 라이브러리 가져오기) 도이 특성을 적용 합니다. 형식 라이브러리를 가져올 때 dispinterface에 특성을 적용 합니다.The Tlbimp.exe (Type Library Importer) also applies this attribute; it applies the attribute to dispinterfaces when it imports a type library.

참고

COM에서 관리 코드로 발생 하 고 관리 코드는 PreserveSigAttribute 클래스로 표시 되는 경우 Currency, GuidObject의 반환 형식은 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 throw 됩니다.When you attempt to use one of these return types with the PreserveSigAttribute class during these conditions, a TypeLoadException is thrown.

생성자

PreserveSigAttribute()

PreserveSigAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the PreserveSigAttribute class.

속성

TypeId

파생 클래스에서 구현될 때 이 Attribute의 고유 식별자를 가져옵니다.When implemented in a derived class, gets a unique identifier for this Attribute.

(다음에서 상속됨 Attribute)

메서드

Equals(Object)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.Returns a value that indicates whether this instance is equal to a specified object.

(다음에서 상속됨 Attribute)
GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.Returns the hash code for this instance.

(다음에서 상속됨 Attribute)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(다음에서 상속됨 Attribute)
Match(Object)

파생된 클래스에서 재정의할 경우,이 인스턴스가 지정된 된 개체와 같은지 여부를 나타내는 값을 반환 합니다.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(다음에서 상속됨 Attribute)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 string을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

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

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.Maps a set of names to a corresponding set of dispatch identifiers.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.Retrieves the type information for an object, which can be used to get the type information for an interface.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(다음에서 상속됨 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.Provides access to properties and methods exposed by an object.

(다음에서 상속됨 Attribute)

적용 대상

추가 정보