ManagedToNativeComInteropStubAttribute ManagedToNativeComInteropStubAttribute ManagedToNativeComInteropStubAttribute ManagedToNativeComInteropStubAttribute Class

Определение

Обеспечивает поддержку пользовательской настройки заглушек взаимодействия в сценариях с управляемым COM-взаимодействием.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
Наследование
ManagedToNativeComInteropStubAttributeManagedToNativeComInteropStubAttributeManagedToNativeComInteropStubAttributeManagedToNativeComInteropStubAttribute
Атрибуты

Комментарии

Этот атрибут позволяет разработчикам взаимодействия, имеющим знания о маршалинге и внутренних действиях вызовов взаимодействия, выполнять следующие действия:This attribute enables interop developers who have knowledge about marshaling and the inner workings of interop calls to do the following:

  • Используйте преимущества настраиваемых заглушек взаимодействия во время сборки, а не во время выполнения.Take advantage of customized interop stubs at build time instead of run time.

  • Отладка настраиваемых заглушек взаимодействия.Debug customized interop stubs.

  • Предоставляют возможности упаковки в заглушке, которую не предоставляет среда выполнения.Provide marshaling capabilities within a stub that the runtime does not provide.

  • Предоставьте возможности диспетчеризации методов для конкретного пользователя.Provide user-specific method dispatch capabilities.

Атрибут применяется к методу в интерфейсе для указания соответствующего метода-заглушки для COM-взаимодействия с управляемым кодом.You apply the attribute on a method in an interface to specify a corresponding stub method for managed-to-native COM interop.

Если этот атрибут встречается во время выполнения, среда CLR не создает заглушку взаимодействия динамически.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# помощью следующего кода: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(Type, String) ManagedToNativeComInteropStubAttribute(Type, String) ManagedToNativeComInteropStubAttribute(Type, String)

Инициализирует новый экземпляр класса ManagedToNativeComInteropStubAttribute с заданным типом класса и именем метода.Initializes a new instance of the ManagedToNativeComInteropStubAttribute class with the specified class type and method name.

Свойства

ClassType ClassType ClassType ClassType

Получает класс, содержащий требуемый метод-заглушку.Gets the class that contains the required stub method.

MethodName MethodName MethodName MethodName

Получает имя метода-заглушки.Gets the name of the stub method.

TypeId TypeId TypeId TypeId

При реализации в производном классе возвращает уникальный идентификатор для этого Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Методы

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)

Применяется к