大多数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);
答案 0 :(得分:1)
这是一个虚假的注释,表示传递给类方法的 this 指针。你实际上并没有在C ++和C#中声明它,而是在没有明确写出来的情况下传递它。
但请注意服务器和客户端之间的区别。在服务器中,您使用 this 关键字来恢复该指针。在客户端中,您有对象引用。例如:
Word.Application app = new Word.Application();
Word.Document doc = new Word.Document();
app和doc变量是您要查找的对象引用。 Word中应用程序和文档接口实现中 this 的值。暂时忽略RCW的错综复杂。