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)

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