Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Marshal.GetComInterfaceForObject (Object, Type)

 

Data di pubblicazione: ottobre 2016

Restituisce un puntatore a un IUnknown interfaccia che rappresenta l'interfaccia specificata sull'oggetto specificato. L'accesso all'interfaccia di query è abilitato per impostazione predefinita.

Spazio dei nomi:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

[SecurityCriticalAttribute]
public static IntPtr GetComInterfaceForObject(
	object o,
	Type T
)

Parametri

o
Type: System.Object

Oggetto che fornisce l'interfaccia.

T
Type: System.Type

Tipo di interfaccia richiesto.

Valore restituito

Type: System.IntPtr

Puntatore a interfaccia che rappresenta l'interfaccia specificata per l'oggetto.

Exception Condition
ArgumentException

Il T parametro non è un'interfaccia.

-oppure-

Il tipo non è visibile a COM.

-oppure-

Il T parametro è un tipo generico.

InvalidCastException

Il o parametro non supporta l'interfaccia richiesta.

ArgumentNullException

Il valore del parametro o è null.

-oppure-

Il valore del parametro T è null.

Questo metodo restituisce un puntatore a interfaccia che rappresenta l'interfaccia richiesta sull'oggetto specificato. È particolarmente utile se si dispone di un metodo non gestito che è previsto che venga passato un puntatore a interfaccia. Chiamando un oggetto con questo metodo, il conteggio dei riferimenti incrementare sul puntatore a interfaccia prima che venga restituito il puntatore del mouse. Utilizzare sempre Marshal.Release per diminuire il conteggio dei riferimenti una volta completato il puntatore del mouse. È necessario rispettare le regole definite da COM quando si utilizzano i puntatori a interfaccia COM non elaborati.

GetComInterfaceForObject(Object, Type) è utile quando si chiama un metodo che espone un parametro di un oggetto COM come un IntPtr tipo, o con marshalling personalizzato. Anche se meno comune, è possibile utilizzare questo metodo su un oggetto gestito per ottenere un puntatore a wrapper dell'oggetto COM. Ad esempio, è possibile utilizzare GetComInterfaceForObject(Object, Type) su un oggetto gestito che viene esportato a COM per ottenere un puntatore a interfaccia per System.Runtime.InteropServices.UCOMIConnectionPointContainer. Poiché il tipo corrispondente per passare al secondo parametro non dispone di un'interfaccia di classe non è possibile ottenere un puntatore a un'interfaccia di classe (t). Utilizzare invece Marshal.GetIDispatchForObject per richiamare membri sull'interfaccia predefinita di COM callable wrapper, che in genere un'interfaccia di classe ad invio automatico.

Il GetComInterfaceForObject(Object, Type) overload del metodo consente la personalizzazione dell'interfaccia di query per impostazione predefinita. Per specificare se applicare la personalizzazione dell'interfaccia di query, utilizzare il GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) overload del metodo.

Per ulteriori informazioni, vedere il COM Callable Wrapper, Runtime Callable Wrapper, e Introduzione all'interfaccia della classe argomenti.

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: