Condividi tramite


Applicazione di attributi di interoperabilità

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

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

Attributi della fase di progettazione

L'utilizzo di attributi della fase di progettazione consente di intervenire sul risultato del processo di conversione eseguito dalle API e dagli strumenti di interoperabilità COM. Nella tabella che segue vengono descritti gli attributi che possono essere applicati al codice sorgente gestito. Anche gli strumenti di interoperabilità COM possono in alcuni casi applicare gli attributi descritti di seguito.

Attributo

Descrizione

AutomationProxyAttribute

Specifica se il marshalling del tipo deve essere eseguito utilizzando 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 una coclasse o una definizione di interfaccia è stata importata da una libreria dei tipi COM. Il runtime utilizza questo flag per determinare come attivare il tipo e 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 specificato, in modo che possa essere eseguito codice utente durante il processo di registrazione.

ComSourceInterfacesAttribute

Identifica le interfacce che sono fonti di eventi per la classe.

Gli strumenti di interoperabilità COM possono applicare questo attributo.

ComUnregisterFunctionAttribute

Indica che quando la registrazione dell'assembly presso COM viene annullata deve essere chiamato un metodo specificato, in modo che possa essere eseguito codice utente durante il processo.

ComVisibleAttribute

Rende i tipi invisibili a COM quando il valore dell'attributo è uguale a 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 occorre utilizzare questo attributo per renderli visibili.

DispIdAttribute

Specifica il DISPID COM di un metodo o di un campo. Questo attributo contiene il DISPID per il metodo, per il campo o per la proprietà che descrive.

Gli strumenti di interoperabilità COM possono applicare questo attributo.

FieldOffsetAttribute

Indica la posizione fisica di ciascun campo all'interno di una classe quando è utilizzato con l'attributo StructLayoutAttribute e LayoutKind è impostato su Explicit.

GuidAttribute

Specifica l'identificatore univoco globale (GUID, Globally Unique Identifier) di una classe, un'interfaccia o un'intera libreria dei tipi. La stringa di formato passata all'attributo deve costituire un argomento valido per il costruttore del tipo System.Guid.

Gli strumenti di interoperabilità COM possono applicare questo attributo.

IDispatchImpAttribute

Indica quale implementazione dell'interfaccia IDispatch utilizza Common Language Runtime quando espone a COM interfacce duali e interfacce dispatch.

InAttribute

Indica che è necessario effettuare il marshalling dei dati verso il chiamante. Può essere utilizzato per i parametri.

InterfaceTypeAttribute

Controlla come una interfaccia gestita è esposta ai client COM (Dual, derivata da IUnknown o soltanto IDispatch).

Gli strumenti di interoperabilità COM possono applicare questo attributo.

LCIDConversionAttribute

Indica che una firma del metodo non gestito accetta un parametro LCID.

Gli strumenti di interoperabilità COM possono applicare questo attributo.

MarshalAsAttribute

Indica come deve essere effettuato il marshalling dei dati di campi o parametri tra codice gestito e codice non gestito. Questo attributo è sempre facoltativo perché per ciascun tipo di dati è previsto un comportamento di marshalling predefinito.

Gli strumenti di interoperabilità COM possono applicare questo attributo.

OptionalAttribute

Indica che un parametro è facoltativo.

Gli strumenti di interoperabilità COM possono applicare questo attributo.

OutAttribute

Indica che è necessario effettuare il marshalling dei dati di un campo o parametro restituito 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, come pure sull'esportazione delle librerie dei tipi.

Gli strumenti di interoperabilità COM possono applicare questo attributo.

ProgIdAttribute

Specifica il ProgID di una classe .NET Framework. Può essere utilizzato per le classi.

StructLayoutAttribute

Controlla il layout fisico dei campi di una classe.

Gli strumenti di interoperabilità COM possono applicare questo attributo.

Attributi di strumenti di conversione

Nella tabella che segue vengono descritti gli attributi applicati dagli strumenti di interoperabilità COM durante il processo di conversione. Questi attributi non vanno applicati in fase di progettazione.

Attributo

Descrizione

ComAliasNameAttribute

Indica gli alias COM di un tipo campo o parametro. Può essere utilizzato per parametri, campi o valori restituiti.

ComConversionLossAttribute

Indica che informazioni relative a una classe o a un'interfaccia sono andate perdute 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 all'origine per questa funzione dalla libreria dei tipi COM.

TypeLibTypeAttribute

Contiene i TYPEFLAGS importati all'origine per questo tipo dalla libreria dei tipi COM.

TypeLibVarAttribute

Contiene i VARFLAGS importati all'origine per questa variabile dalla libreria dei tipi COM.

Vedere anche

Riferimenti

System.Runtime.InteropServices

Concetti

Esposizione di componenti .NET Framework a COM

Estensione di metadati mediante attributi

Qualificazione di tipi .NET per l'interoperabilità

Preparazione di un assembly per COM