Utilizzo di tipi COM nel codice gestito

I tipi COM definiti in un assembly sono uguali a tutti gli altri tipi gestiti. I client gestiti possono creare, nel modo usuale, una nuova istanza di un tipo COM e ottenere informazioni sulle classi tramite metadati, esattamente come per le altri classi gestite. La sintassi dei metodi può essere esaminata mediante un visualizzatore oggetti o ottenuta tramite reflection, come accade con qualunque altra classe gestita. Quando l'oggetto COM restituisce un HRESULT di errore, il client .NET Framework rileverà un'eccezione corrispondente.

Esistono due modi in cui l'applicazione può includere le informazioni sul tipo che consentono l'interoperabilità con i tipi COM:

  • Utilizzo di tipi di interoperabilità incorporati: a partire da .NET Framework versione 4 è possibile indicare al compilatore di incorporare nel file eseguibile informazioni sul tipo ottenute da un assembly di interoperabilità. Il compilatore incorpora solo le informazioni sul tipo utilizzate dall'applicazione. Non è necessario distribuire l'assembly di interoperabilità con l'applicazione. Questa è la tecnica consigliata.

  • Distribuzione di assembly di interoperabilità: è possibile creare un riferimento standard a un assembly di interoperabilità. In questo caso è necessario distribuire l'assembly di interoperabilità con l'applicazione. Se si utilizza questa tecnica senza tuttavia utilizzare un componente COM privato, fare sempre riferimento all'assembly di interoperabilità primario (PIA, Primary Interop Assembly) pubblicato dall'autore del componente COM che si intende incorporare nel codice gestito. Per ulteriori informazioni sulla creazione e sull'utilizzo di assembly di interoperabilità primari, vedere Assembly di interoperabilità primari.

NotaNota

Quando si utilizzano tipi di interoperabilità incorporati è possibile incorporarli dall'assembly di interoperabilità primario pubblicato dall'autore del componente COM.Tuttavia, non è necessario distribuire l'assembly di interoperabilità primario con l'applicazione.

L'utilizzo di tipi di interoperabilità incorporati riduce la dimensione dell'applicazione, in quanto la maggior parte delle applicazioni non utilizza tutte le funzionalità di un componente COM. Il compilatore è molto efficiente quando incorpora informazioni sul tipo. Se l'applicazione utilizza solo alcuni dei metodi su un'interfaccia COM, il compilatore non incorpora i metodi inutilizzati. Quando un'applicazione con informazioni sul tipo incorporate interagisce con un'altra applicazione di tale tipo o con un'applicazione che utilizza un assembly di interoperabilità primario, Common Language Runtime utilizza regole di equivalenza fra tipi per determinare se due tipi con lo stesso nome rappresentano lo stesso tipo COM.

Lo stabilire e il rilasciare un riferimento a un oggetto COM in esecuzione sono come lo stabilire e il rilasciare un riferimento a qualunque altro oggetto gestito in esecuzione. Quando i client .NET Framework ottengono e rilasciano riferimenti a un oggetto COM, il runtime tiene il conteggio dei riferimenti all'oggetto COM come farebbe qualsiasi altro client COM. Pertanto, i client .NET Framework possono comportarsi come se l'oggetto fosse sottoposto a Garbage Collection, come farebbero per qualunque altro oggetto server gestito.

Visual Studio semplifica l'incorporazione delle informazioni sul tipo in un'applicazione o in un componente aggiuntivo. Per i relativi esempi, vedere Procedura dettagliata: incorporamento delle informazioni sui tipi da assembly di Microsoft Office (C# e Visual Basic) e Procedura dettagliata: incorporamento dei tipi da assembly gestiti (C# e Visual Basic).

Per esempi di codice relativi agli argomenti illustrati in questa sezione, vedere Esempio di interoperabilità COM: client NET e server COM.

Le regole di equivalenza fra tipi vengono discusse in Equivalenza del tipo e tipi di interoperabilità incorporati. Tuttavia, per utilizzare gli oggetti COM non è necessario conoscere queste regole.

Vedere anche

Attività

Procedura dettagliata: incorporamento delle informazioni sui tipi da assembly di Microsoft Office (C# e Visual Basic)

Procedura dettagliata: incorporamento dei tipi da assembly gestiti (C# e Visual Basic)

Concetti

Esposizione di componenti COM a .NET Framework

Analisi dei tipi COM contenuti in un assembly

Attivazione di un oggetto COM

Chiamata di metodi, proprietà ed eventi

Considerazioni di progettazione per l'interoperabilità

Wrapper COM