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
- Наследование
- Атрибуты
Комментарии
Этот атрибут позволяет разработчикам взаимодействия, обладающим знаниями о маршалинге и внутренней работе вызовов взаимодействия, выполнять следующие действия:
Используйте настраиваемые заглушки взаимодействия во время сборки, а не во время выполнения.
Отладка настраиваемых заглушок взаимодействия.
Предоставьте возможности маршалинга в заглушку, которую не предоставляет среда выполнения.
Предоставление возможностей диспетчеризации методов для конкретных пользователей.
Атрибут применяется к методу в интерфейсе, чтобы указать соответствующий метод-заглушку для управляемого 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) |