Поделиться через


ManagedToNativeComInteropStubAttribute Класс

Определение

Обеспечивает поддержку пользовательской настройки заглушек взаимодействия в сценариях с управляемым COM-взаимодействием.

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
Атрибуты

Комментарии

Этот атрибут позволяет разработчикам взаимодействия, обладающим знаниями о маршалинге и внутренней работе вызовов взаимодействия, выполнять следующие действия:

  • Используйте настраиваемые заглушки взаимодействия во время сборки, а не во время выполнения.

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

  • Предоставьте возможности маршалинга в заглушку, которую не предоставляет среда выполнения.

  • Предоставление возможностей диспетчеризации методов для конкретных пользователей.

Атрибут применяется к методу в интерфейсе, чтобы указать соответствующий метод-заглушку для управляемого com-взаимодействия.

Если этот атрибут обнаружен во время выполнения, среда CLR не создает заглушку взаимодействия динамически. Вместо этого он вызывает пользовательскую заглушку, созданную во время сборки.

Атрибут ManagedToNativeComInteropStubAttribute имеет следующие характеристики:

  • Атрибут можно использовать только в методах из интерфейсов, помеченных как [ComImport]. Если атрибут применяется к типам, не относящихся к интерфейсу, он игнорируется средой выполнения.

  • Атрибут можно использовать только один раз в том же методе в интерфейсе. Если он используется несколько раз, компилятор создает ошибку повторяющегося атрибута.

  • Атрибут не наследуется от базового интерфейса. Производные интерфейсы должны явно назначать атрибут .

  • Сборка, содержащая метод с атрибутом, также должна содержать настроенную заглушку.

Перегруженные методы-заглушки являются допустимыми. Хотя вы указываете только тип и имя метода-заглушки, среда выполнения обнаружит соответствующую заглушку. Это делается путем проверки всех аргументов в методе интерфейса, а затем выполнения полного сопоставления сигнатуры с помощью явного this указателя.

Кроме того, несколько методов в интерфейсе могут совместно использовать один метод-заглушку; Однако при использовании общих заглушек следует соблюдать осторожность.

Примечание

Методы-заглушки должны быть статическими.

Вы можете сообщить среде выполнения об использовании настраиваемой заглушки взаимодействия во время сборки, а не во время выполнения с помощью следующего кода C#:

[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)

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