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. |