Applicazione di attributi di interoperabilità

Lo spazio dei nomi System.Runtime.InteropServices offre tre categorie di attributi specifici per l'interoperabilità: quelli applicati manualmente in fase di progettazione, quelli applicati dalle API e dagli strumenti di interoperabilità COM durante il processo di conversione e quelli applicati nell'uno o nell'altro modo.

Per informazioni su come applicare gli attributi nel codice gestito, vedere Estensione di metadati mediante attributi. Come per altri attributi personalizzati, è possibile applicare gli attributi specifici per l'interoperabilità a tipi, metodi, proprietà, parametri, campi e altri membri.

Attributi della fase di progettazione

È possibile intervenire sul risultato del processo di conversione eseguito dalle API e dagli strumenti di interoperabilità COM usando gli attributi in fase di progettazione. La tabella seguente descrive gli attributi che è possibile applicare al codice sorgente gestito. Questi attributi possono essere applicati, in alcuni casi, anche dagli strumenti di interoperabilità COM.

Attributo Descrizione
AutomationProxyAttribute Specifica se il marshalling del tipo deve essere effettuato mediante il gestore di marshalling di Automazione oppure un proxy e uno stub personalizzati.
ClassInterfaceAttribute Controlla il tipo di interfaccia generato per una classe.
CoClassAttribute Identifica il CLSID della coclasse originale importata da una libreria dei tipi.

Questo attributo viene in genere applicato dagli strumenti di interoperabilità COM.
ComImportAttribute Indica che è stata importata una definizione di interfaccia o una coclasse da una libreria dei tipi COM. Il runtime usa questo flag per determinare come attivare il tipo ed effettuarne il marshalling. Questo attributo impedisce la riesportazione del tipo in una libreria dei tipi.

Questo attributo viene in genere applicato dagli strumenti di interoperabilità COM.
ComRegisterFunctionAttribute Indica che, quando l'assembly viene registrato per l'utilizzo da COM, deve essere chiamato un metodo per consentire l'esecuzione di codice utente durante il processo di registrazione.
ComSourceInterfacesAttribute Identifica le interfacce che sono fonti di eventi per la classe.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.
ComUnregisterFunctionAttribute Indica che, quando la registrazione dell'assembly da COM viene annullata, deve essere chiamato un metodo per consentire l'esecuzione di codice utente durante il processo.
ComVisibleAttribute Rende i tipi invisibili a COM quando il valore dell'attributo è false. Questo attributo può essere applicato a un tipo singolo o a un intero assembly per controllare la visibilità COM. Tutti i tipi gestiti e pubblici sono visibili per impostazione predefinita. Non è necessario usare questo attributo per renderli visibili.
DispIdAttribute Specifica l'identificatore di invio (DISPID) COM di un metodo o un campo. Questo attributo contiene il DISPID per il metodo, il campo o la proprietà che descrive.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.
ComDefaultInterfaceAttribute Indica l'interfaccia predefinita per una classe COM implementata in .NET.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.
FieldOffsetAttribute Indica la posizione fisica di ogni campo all'interno di una classe quando è usato con l'attributo StructLayoutAttribute e LayoutKind è impostato su Explicit.
GuidAttribute Specifica l'identificatore univoco globale (GUID) di una classe, un'interfaccia o un'intera libreria dei tipi. Il formato della stringa passata all'attributo deve essere un argomento di costruttore accettabile per il tipo System.Guid.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.
IDispatchImplAttribute Indica quale implementazione dell'interfaccia IDispatch viene usata da Common Language Runtime quando espone a COM interfacce duali e dispatch.
InAttribute Indica che è necessario effettuare il marshalling dei dati verso il chiamante. Può essere usato per i parametri.
InterfaceTypeAttribute Controlla in che modo un'interfaccia gestita viene esposta ai client COM (duale, derivata da IUnknown o solo IDispatch).

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.
LCIDConversionAttribute Indica che una firma di metodo non gestito accetta un parametro LCID.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.
MarshalAsAttribute Indica come deve essere effettuato il marshalling dei dati di campi o parametri tra codice gestito e codice non gestito. L'attributo è sempre facoltativo perché per ogni tipo di dati è previsto un comportamento di marshalling predefinito.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.
OptionalAttribute Indica che un parametro è facoltativo.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.
OutAttribute Indica che è necessario effettuare il marshalling dei dati di un campo o di un parametro da un oggetto chiamato al relativo chiamante.
PreserveSigAttribute Disattiva la trasformazione della firma retval o HRESULT che normalmente ha luogo durante le chiamate di interoperabilità. L'attributo influisce sul marshalling e sull'esportazione delle librerie dei tipi.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.
ProgIdAttribute Specifica il ProgID di una classe .NET. Può essere usato per le classi.
StructLayoutAttribute Controlla il layout fisico dei campi di una classe.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.

Attributi degli strumenti di conversione

La tabella seguente descrive gli attributi applicati dagli strumenti di interoperabilità COM durante il processo di conversione. Questi attributi non devono essere applicati in fase di progettazione.

Attributo Descrizione
ComAliasNameAttribute Indica l'alias COM per un tipo di parametro o campo. Può essere usato per parametri, campi o valori restituiti.
ComConversionLossAttribute Indica che le informazioni relative a una classe o a un'interfaccia sono andate perse durante l'importazione da una libreria dei tipi a un assembly.
ComEventInterfaceAttribute Identifica l'interfaccia di origine e la classe che implementa i metodi dell'interfaccia eventi.
ImportedFromTypeLibAttribute Indica che l'assembly è stato importato in origine da una libreria dei tipi COM. Questo attributo contiene la definizione della libreria dei tipi di origine.
TypeLibFuncAttribute Contiene i FUNCFLAGS importati in origine per questa funzione dalla libreria dei tipi COM.
TypeLibTypeAttribute Contiene i TYPEFLAGS importati in origine per questo tipo dalla libreria dei tipi COM.
TypeLibVarAttribute Contiene i VARFLAGS importati in origine per questa variabile dalla libreria dei tipi COM.

Vedi anche