通过C#ComImport访问“THIS_”COM参数

时间:2010-09-04 22:18:29

标签: c# com interop

大多数com方法都有这样的签名:

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 个答案:

答案 0 :(得分:1)

这是一个虚假的注释,表示传递给类方法的 this 指针。你实际上并没有在C ++和C#中声明它,而是在没有明确写出来的情况下传递它。

但请注意服务器和客户端之间的区别。在服务器中,您使用 this 关键字来恢复该指针。在客户端中,您有对象引用。例如:

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

app和doc变量是您要查找的对象引用。 Word中应用程序和文档接口实现中 this 的值。暂时忽略RCW的错综复杂。