ManagedToNativeComInteropStubAttribute 클래스

정의

관리-COM interop 시나리오에서 interop 스텁의 사용자 지정에 대한 지원을 제공합니다.

public ref class ManagedToNativeComInteropStubAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
Public NotInheritable Class ManagedToNativeComInteropStubAttribute
Inherits Attribute
상속
ManagedToNativeComInteropStubAttribute
특성

설명

이 특성을 사용하면 interop 호출의 내부 작동 및 마샬링에 대한 지식이 있는 interop 개발자가 다음을 수행할 수 있습니다.

  • 런타임 대신 빌드 시 사용자 지정된 interop 스텁을 활용합니다.

  • 사용자 지정된 interop 스텁을 디버그합니다.

  • 런타임에서 제공하지 않는 스텁 내에서 마샬링 기능을 제공합니다.

  • 사용자별 메서드 디스패치 기능을 제공합니다.

인터페이스의 메서드에 특성을 적용하여 관리형 COM interop에 해당하는 스텁 메서드를 지정합니다.

런타임 중에 이 특성이 발견되면 공용 언어 런타임은 interop 스텁을 동적으로 생성하지 않습니다. 대신 빌드 시 생성된 사용자 지정 스텁을 호출합니다.

특성에는 ManagedToNativeComInteropStubAttribute 다음과 같은 특성이 있습니다.

  • 특성은 로 표시된 [ComImport]인터페이스의 메서드에서만 사용할 수 있습니다. 특성이 비 인터페이스 형식에 적용되는 경우 런타임에서 무시됩니다.

  • 특성은 인터페이스의 동일한 메서드에서 한 번만 사용할 수 있습니다. 두 번 이상 사용되는 경우 컴파일러는 중복된 특성 오류를 생성합니다.

  • 특성은 기본 인터페이스에서 상속할 수 없습니다. 파생 인터페이스는 특성을 명시적으로 할당해야 합니다.

  • 특성이 지정된 메서드를 포함하는 어셈블리에도 사용자 지정된 스텁이 포함되어야 합니다.

오버로드된 스텁 메서드는 유효합니다. 스텁 메서드의 형식과 이름만 지정하지만 런타임은 해당 스텁을 검색합니다. 인터페이스 메서드의 모든 인수를 검사한 다음 명시적 포인터를 사용하여 전체 서명 일치를 수행하여 이 작업을 수행합니다 this .

인터페이스의 여러 메서드가 동일한 스텁 메서드를 공유할 수도 있습니다. 그러나 공유 스텁을 사용할 때는 주의해야 합니다.

참고

스텁 메서드는 정적이어야 합니다.

다음 C# 코드를 사용하여 런타임 대신 빌드 시 사용자 지정된 interop 스텁을 사용하도록 런타임에 알릴 수 있습니다.

[ComImport]  
interface IMyInterface  
{  
    [ManagedToNativeComInteropStubAttribute(typeof(TestStubClass),  
              "ForwardTestStub")]  
    void GetString (string arg);  
}  

그런 다음, 다음 코드를 사용하여 해당 스텁 메서드를 선언할 수 있습니다.

class TestStubClass  
{  
    internal static void ForwardTestStub(IMyInterface thisObject,  
             string arg) {…}  
}  

생성자

ManagedToNativeComInteropStubAttribute(Type, String)

지정된 클래스 형식과 메서드 이름을 사용하여 ManagedToNativeComInteropStubAttribute 클래스의 새 인스턴스를 초기화합니다.

속성

ClassType

필요한 스텁 메서드가 포함된 클래스를 가져옵니다.

MethodName

스텁 메서드의 이름을 가져옵니다.

TypeId

파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다.

(다음에서 상속됨 Attribute)

메서드

Equals(Object)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.

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

이 인스턴스의 해시 코드를 반환합니다.

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

현재 인스턴스의 Type을 가져옵니다.

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

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.

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

파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.

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

현재 Object의 단순 복사본을 만듭니다.

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

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

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

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.

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

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.

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

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).

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

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.

(다음에서 상속됨 Attribute)

적용 대상