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


InterfaceTypeAttribute Класс

Определение

Указывает, является ли интерфейс при предоставлении COM сдвоенным, диспетчерским или только IUnknown.

public ref class InterfaceTypeAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)]
public sealed class InterfaceTypeAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class InterfaceTypeAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)>]
type InterfaceTypeAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type InterfaceTypeAttribute = class
    inherit Attribute
Public NotInheritable Class InterfaceTypeAttribute
Inherits Attribute
Наследование
InterfaceTypeAttribute
Атрибуты

Примеры

В следующем примере показано, как InterfaceTypeAttribute управляет предоставлением интерфейса COM.

using namespace System::Runtime::InteropServices;

//Interface is exposed to COM as dual.
interface class IMyInterface1{};

//Insert code here.
//Interface is exposed to COM as IDispatch.

[InterfaceTypeAttribute(ComInterfaceType::InterfaceIsIDispatch)]
interface class IMyInterface2{};
//Insert code here.
using System.Runtime.InteropServices;

//Interface is exposed to COM as dual.
interface IMyInterface1
{
    //Insert code here.
}

//Interface is exposed to COM as IDispatch.
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
interface IMyInterface2
{
    //Insert code here.
}
Imports System.Runtime.InteropServices

'Interface is exposed to COM as dual.
Interface IMyInterface1
     'Insert code here.
End Interface

'Interface is exposed to COM as IDispatch.
<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)> _
Interface IMyInterface2
    'Insert code here.
End Interface

Комментарии

Этот атрибут можно применить к интерфейсам.

По умолчанию Tlbexp.exe (средство экспорта библиотек типов) предоставляет управляемый интерфейс com в виде двойного интерфейса, что обеспечивает гибкость позднего связывания или производительность ранней привязки. Перечисление ComInterfaceType позволяет переопределить поведение по умолчанию и указать только позднюю привязку или только раннюю привязку. Например, можно применить к InterfaceType (ComInterfaceType.InterfaceIsIDispatch) интерфейсу для создания метаданных, чтобы ограничить вызывающие элементы только поздней привязкой. Хотя интерфейсы, производные от IDispatch интерфейса , часто являются двойными, InterfaceIsIDispatch член перечисления допускает только вызовы методов интерфейса с поздней привязкой. Этот атрибут не влияет на управляемое представление интерфейса. Дополнительные сведения о том, как интерфейсы предоставляются com, см. в разделе Экспортированное преобразование типов.

Tlbimp.exe (средство импорта библиотек типов) также применяет этот атрибут к импортированным интерфейсам, несуальным; он применяет соответствующий элемент перечисления, чтобы указать, что интерфейс является только диспетчером или IUnknown -only.

Конструкторы

InterfaceTypeAttribute(ComInterfaceType)

Инициализирует новый экземпляр класса InterfaceTypeAttribute с указанным членом перечисления ComInterfaceType.

InterfaceTypeAttribute(Int16)

Инициализирует новый экземпляр класса InterfaceTypeAttribute с указанным членом перечисления ComInterfaceType.

Свойства

TypeId

В случае реализации в производном классе возвращает уникальный идентификатор для этого атрибута Attribute.

(Унаследовано от Attribute)
Value

Возвращает значение ComInterfaceType, описывающее способ предоставления интерфейса COM.

Методы

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)

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

См. также раздел