Interfacce sottoposte a marshalling
L'obiettivo primario del Runtime Callable Wrapper (RCW) è nascondere le differenze tra i modelli di programmazione gestito e non gestito. Per semplificare la transizione, l'RCW utilizza interfacce COM selezionate senza esporle al client .NET, come illustrato nella figura che segue.
Interfacce COM e il Runtime Callable Wrapper
Quando viene creato come oggetto ad associazione anticipata, l'RCW è specifico del tipo. Esso implementa le interfacce implementate dall'oggetto COM ed espone i metodi, le proprietà e gli eventi delle interfacce dell'oggetto. Nella figura l'RCW espone l'interfaccia INew ma utilizza le interfacce IUnknown e IDispatch. L'RCW espone inoltre al client .NET tutti i membri dell'interfaccia INew.
L'RCW utilizza le interfacce elencate nella tabella che segue, che sono esposte dall'oggetto di cui effettua il wrapping.
Interfaccia |
Descrizione |
---|---|
IDispatch |
Per l'associazione tardiva a oggetti COM tramite reflection. |
IErrorInfo |
Fornisce una descrizione testuale dell'errore, la relativa origine, un file della Guida, un contesto della Guida e il GUID dell'interfaccia che ha definito l'errore (sempre GUID_NULL per le classi .NET). |
IProvideClassInfo |
Se l'oggetto COM di cui si effettua il wrapping implementa IProvideClassInfo, l'RCW estrarrà le informazioni contenute in tale interfaccia per definire meglio l'identità del tipo. |
IUnknown |
Per l'identità del tipo, l'assegnazione forzata e la gestione della durata:
|
Talvolta l'RCW utilizza le interfacce elencate nella tabella che segue, che sono esposte dall'oggetto di cui effettua il wrapping.
Interfaccia |
Descrizione |
---|---|
IConnectionPoint e IConnectionPointContainer |
L'RCW converte gli oggetti che espongono eventi basati sui punti di connessione in eventi basati sui delegati. |
IDispatchEx |
Se la classe implementa IDispatchEx, l'RCW implementerà IExpando. L'interfaccia IDispatchEx è un'estensione dell'interfaccia IDispatch, ma diversamente da IDispatch consente l'enumerazione, l'aggiunta, l'eliminazione e la chiamata dei membri con distinzione tra maiuscole e minuscole. |
IEnumVARIANT |
Consente di trattare come insiemi i tipi COM che supportano l'enumerazione. |
Vedere anche
Concetti
Qualificazione di tipi .NET per l'interoperabilità