2010-09-04 63 views
0

大多數COM方法COM參數有這樣的簽名:訪問 「THIS_」 通過C#ComImport

STDMETHOD(someFunc) (THIS_ ParamType param) PURE; 

它通過ComImport轉化爲C#爲:

[PreserveSig()] 
int someFunc(MarshaledParamType param); 

是否有某種方式保存PInvoke簽名中的「THIS_」參數?所以,我可以這樣做:

int someFunc(IntPtr ptrToCOMInstance, MarshaledParamType param); 

int someFunc(IMyCOMClass comInstance, MarshaledParamType param); 

回答

1

這是一個假的批註,表示被傳遞給類方法的指針。你不用C++或C#實際聲明它,它會在沒有明確寫出的情況下通過。

但請注意服務器和客戶端之間的區別。在服務器中,您使用這個關鍵字來恢復該指針。在客戶端中,您有對象引用。例如:

Word.Application app = new Word.Application(); 
Word.Document doc = new Word.Document(); 

應用程序和doc變量是您正在查找的對象引用。 這個的值在Word的Application和Document接口的實現裏面。暫時忽略RCW的錯綜複雜。