Condividi tramite


InterfaceTypeAttribute Classe

Definizione

Indica se un'interfaccia gestita è del tipo dual, dispatch-only o solo IUnknown durante l'esposizione a 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
Ereditarietà
InterfaceTypeAttribute
Attributi

Esempio

Nell'esempio seguente viene illustrato come controllare l'esposizione InterfaceTypeAttribute dell'interfaccia a 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

Commenti

È possibile applicare questo attributo alle interfacce.

Per impostazione predefinita, la Tlbexp.exe (Type Library Exporter) espone un'interfaccia gestita a COM come doppia interfaccia, offrendo la flessibilità dell'associazione tardiva o le prestazioni dell'associazione anticipata. L'enumerazione ComInterfaceType consente di eseguire l'override del comportamento predefinito e specificare solo l'associazione tardiva o l'associazione anticipata. Ad esempio, è possibile applicare InterfaceType (ComInterfaceType.InterfaceIsIDispatch) a un'interfaccia per produrre metadati per limitare i chiamanti solo all'associazione tardiva. Anche se le interfacce derivate dall'interfaccia IDispatch sono spesso doppie, il InterfaceIsIDispatch membro di enumerazione consente solo chiamate con associazione tardiva ai metodi di interfaccia. Questo attributo non ha alcun effetto sulla visualizzazione gestita dell'interfaccia. Per altre informazioni sulla modalità di esposizione delle interfacce a COM, vedere Conversione dei tipi esportati.

Il Tlbimp.exe (Type Library Import) applica anche questo attributo alle interfacce importate e nonuali; applica il membro di enumerazione appropriato per indicare che l'interfaccia è solo dispatch-only o IUnknown -only.

Costruttori

InterfaceTypeAttribute(ComInterfaceType)

Inizializza una nuova istanza della classe InterfaceTypeAttribute con il membro di enumerazione ComInterfaceType specificato.

InterfaceTypeAttribute(Int16)

Inizializza una nuova istanza della classe InterfaceTypeAttribute con il membro di enumerazione ComInterfaceType specificato.

Proprietà

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)
Value

Ottiene il valore ComInterfaceType che descrive come esporre l'interfaccia a COM.

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

(Ereditato da Attribute)

Si applica a

Vedi anche