Compartilhar via


InterfaceTypeAttribute Classe

Definição

Indica se uma interface gerenciada é dupla, somente de expedição ou somente de IUnknown quando exposta à COM.

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
Herança
InterfaceTypeAttribute
Atributos

Exemplos

O exemplo a seguir mostra como controla como InterfaceTypeAttribute a interface é exposta ao 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

Comentários

Você pode aplicar esse atributo a interfaces.

Por padrão, o Tlbexp.exe (Exportador da Biblioteca de Tipos) expõe uma interface gerenciada para COM como uma interface dupla, proporcionando a flexibilidade da associação tardia ou do desempenho da associação antecipada. A ComInterfaceType enumeração permite que você substitua o comportamento padrão e especifique somente associação tardia ou somente associação antecipada. Por exemplo, você pode aplicar InterfaceType (ComInterfaceType.InterfaceIsIDispatch) a uma interface para produzir metadados para restringir os chamadores apenas à associação tardia. Embora as interfaces derivadas da IDispatch interface geralmente sejam duplas, o membro de InterfaceIsIDispatch enumeração permite apenas chamadas de associação tardia para os métodos de interface. Esse atributo não tem efeito na exibição gerenciada da interface. Para obter informações adicionais sobre como as interfaces são expostas ao COM, consulte Conversão de tipo exportado.

O Tlbimp.exe (Importador de Biblioteca de Tipos) também aplica esse atributo a interfaces não virtuais importadas; ele aplica o membro de enumeração apropriado para indicar que a interface é somente expedição ou IUnknown -only.

Construtores

InterfaceTypeAttribute(ComInterfaceType)

Inicializa uma nova instância da classe InterfaceTypeAttribute com o membro de enumeração ComInterfaceType especificado.

InterfaceTypeAttribute(Int16)

Inicializa uma nova instância da classe InterfaceTypeAttribute com o membro de enumeração ComInterfaceType especificado.

Propriedades

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.

(Herdado de Attribute)
Value

Obtém o valor ComInterfaceType que descreve como a interface deve ser exposta a COM.

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a

Confira também