2014-05-12 52 views

回答

4

不傳遞任何東西,它返回接口指針。一個不透明的,IUnknown由所有COM接口實現。在C#中,它將是對象的對象,「可以是任何東西」的託管版本。所以基本的代碼如下所示:

object retval; 
client.GetSomething(SomeID.Magic, out retval); 

然後它是由你來返回的對象強制轉換成實際的接口類型,可能是基於魔術。你的問題根本沒有提示它可能是什麼,你必須閱讀COM組件的文檔纔能有一個想法。

3

假設你不知道什麼關於對象,你可能會使用一個IntPtr來表示IUnknown和然後得到一個RCW它使用Marshal.GetUniqueObjectForIUnknown爲:

// Get some object 

IntPtr ptrObj = IntPtr.Zero; 


Client.GetSomething(someID, out ptrObj); 
object obj = Marshal.GetUniqueObjectForIUnknown(ptrIProfferService); 
相關問題