Esposizione di COM ai componenti di .NET Compact Framework
Aggiornamento: novembre 2007
A partire da .NET Compact Framework versione 2.0 è possibile chiamare oggetti COM da codice gestito. È inoltre possibile importare una libreria dei tipi con l'Utilità di importazione della libreria dei tipi (Tlbimp.exe) disponibile con la versione completa di .NET Framework, oppure in Visual Studio è possibile aggiungere al progetto un riferimento alla libreria dei tipi. Una libreria dei tipi importata viene anche definita assembly di interoperabilità poiché contiene definizioni di tipi COM descritti nei metadati.
Se la memoria nel codice nativo originariamente allocata nel codice gestito rimane memorizzata in una libreria di codice nativo dopo il termine della chiamata alla funzione nativa, è necessario che l'oggetto libreria nativa venga bloccato nel codice gestito in modo che il Garbage Collector non lo possa spostare o raccogliere. È possibile utilizzare la struttura GCHandle per bloccare l'oggetto.
Il codice gestito deve essere responsabile dell'allineamento dei tipi di dati in base ai limiti di byte appropriati, stabiliti dal processo di compressione specificato per il sistema operativo nativo.
Sono disponibili tre attività per chiamare oggetti COM da .NET Compact Framework:
Creare definizioni gestite di tipi e interfacce COM.
Aggiungere un riferimento a tali definizioni dal progetto.
Utilizzare tipi e interfacce COM come tipi gestiti.
È inoltre possibile creare manualmente codice per le definizioni gestite.
Riferimenti agli assembly di interoperabilità
Gli assembly di interoperabilità sono librerie di tipi importate che contengono definizioni di tipi COM descritti nei metadati generati dall'utilità di importazione della libreria di tipi o da Visual Studio.
Per creare riferimenti alla libreria di tipi durante la creazione di progetti, utilizzare l'opzione /r: con compilatori della riga di comando. Questa operazione viene eseguita quando si aggiunge un riferimento a una libreria di tipi in Visual Studio.
Utilizzo di tipi COM come tipi gestiti
I membri dell'interfaccia predefinita vengono aggiunti alla classe durante l'importazione. La chiamata IDispatch o IUnknown, QueryInterface e il conteggio dei riferimenti COM vengono gestiti automaticamente. I valori HRESULT relativi a errori vengono mappati automaticamente alle eccezioni.
Dopo avere importato un tipo COM, è possibile utilizzarlo come qualsiasi altro tipo gestito in attività di programmazione come le seguenti:
Creare istanze con la parola chiave new (New in Visual Basic).
Intercettare eccezioni.
Chiamare direttamente la classe.
Eliminare la necessità di scegliere tra chiamate di tipo IDispatch o IUnknown.
Eseguire il cast di interfacce specifiche, se necessario.