ManagedToNativeComInteropStubAttribute 클래스

정의

관리-COM interop 시나리오에서 interop 스텁의 사용자 지정에 대한 지원을 제공합니다.Provides support for user customization of interop stubs in managed-to-COM interop scenarios.

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

설명

이 특성을 사용 하면 interop 마샬링에 대 한 지식이 있고 다음을 수행 하는 interop 호출의 내부 작업 개발자:This attribute enables interop developers who have knowledge about marshaling and the inner workings of interop calls to do the following:

  • 사용할 사용자 지정 된 interop 스텁의 런타임 대신 빌드 시.Take advantage of customized interop stubs at build time instead of run time.

  • 사용자 지정 된 interop 스텁이 디버그 합니다.Debug customized interop stubs.

  • 런타임에서 제공 하지 않는 스텁 내에서 마샬링 기능을 제공 합니다.Provide marshaling capabilities within a stub that the runtime does not provide.

  • 사용자 고유의 메서드 디스패치 기능을 제공 합니다.Provide user-specific method dispatch capabilities.

관리 되는 네이티브 COM interop에 대 한 해당 스텁 메서드를 지정 하는 인터페이스의 메서드에 특성을 적용 합니다.You apply the attribute on a method in an interface to specify a corresponding stub method for managed-to-native COM interop.

이 특성을 런타임에 발생 하는 경우 공용 언어 런타임에서 interop 스텁의 동적으로 생성 하지 않습니다.If this attribute is encountered during run time, the common language runtime does not dynamically generate an interop stub. 대신 빌드 시 생성 된 사용자 지정 스텁을 호출 합니다.Instead, it invokes the custom stub that was created at build time.

ManagedToNativeComInteropStubAttribute 특성에는 다음과 같은 특징이 있습니다.The ManagedToNativeComInteropStubAttribute attribute has the following characteristics:

  • 특성은 [ComImport]표시 된 인터페이스의 메서드에만 사용할 수 있습니다.The attribute can be used only on methods from interfaces that are marked [ComImport]. 특성이 인터페이스가 아닌 형식에 적용 되는 경우 런타임에서 무시 됩니다.If the attribute is applied to non-interface types, it is ignored by the runtime.

  • 특성은 인터페이스에서 동일한 메서드 번만 사용할 수 있습니다.The attribute can be used only once on the same method in an interface. 한 번만 사용 하는 경우 컴파일러는 중복된 특성 오류를 생성 합니다.If it is used more than once, the compiler generates a duplicated attribute error.

  • 특성 기본 인터페이스에서 상속할 수 없는 합니다.The attribute is not inheritable from a base interface. 파생 된 인터페이스 특성을 명시적으로 지정 해야 합니다.Derived interfaces must explicitly assign the attribute.

  • 특성 사용된 메서드를 포함 하는 어셈블리에는 사용자 지정된 된 스텁도 포함 되어 있어야 합니다.The assembly that contains the attributed method must also contain the customized stub.

오버 로드 된 스텁 메서드는 유효 합니다.Overloaded stub methods are valid. 스텁 메서드의 이름과 형식만 지정할 수 있지만 런타임에 해당 스텁을 검색 합니다.Although you specify only the type and the name of the stub method, the runtime will discover the corresponding stub. 인터페이스 메서드의 모든 인수를 검사 한 다음 명시적 this 포인터를 사용 하 여 전체 시그니처 일치를 수행 하 여이 작업을 수행 합니다.It does this by examining all the arguments on the interface method, and then performing full signature matching by using an explicit this pointer.

동일한 스텁 메서드를 공유 하는 인터페이스의 여러 방법에 대 한도 가능 그러나 주의 해야 공유 스텁을 사용 하는 경우.It is also possible for multiple methods in an interface to share the same stub method; however, you should be careful when you use shared stubs.

참고

스텁 메서드는 정적 이어야 합니다.Stub methods must be static.

다음 C# 코드를 사용 하 여 런타임에 대신 빌드 시간에는 사용자 지정 된 interop 스텁이 사용 하도록 런타임에 알릴 수 있습니다.You could inform the runtime to use a customized interop stub at build time instead of run time with the following C# code:

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

그런 다음 해당 스텁 메서드를 선언 하려면 다음 코드를 사용할 수 있습니다.You could then use the following code to declare the corresponding stub method:

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

생성자

ManagedToNativeComInteropStubAttribute(Type, String)

지정된 클래스 형식과 메서드 이름을 사용하여 ManagedToNativeComInteropStubAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ManagedToNativeComInteropStubAttribute class with the specified class type and method name.

속성

ClassType

필요한 스텁 메서드가 포함된 클래스를 가져옵니다.Gets the class that contains the required stub method.

MethodName

스텁 메서드의 이름을 가져옵니다.Gets the name of the stub method.

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)

적용 대상