Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“访问”;这";通过C#ComImport的COM参数_C#_Com_Interop - Fatal编程技术网

“访问”;这";通过C#ComImport的COM参数

“访问”;这";通过C#ComImport的COM参数,c#,com,interop,C#,Com,Interop,大多数com方法的签名如下所示: STDMETHOD(someFunc) (THIS_ ParamType param) PURE; 通过ComImport将其转换为C#,如下所示: [PreserveSig()] int someFunc(MarshaledParamType param); 有什么方法可以在PInvoke签名中保留“THIS_”参数吗?这样我就可以做如下事情: int someFunc(IntPtr ptrToCOMInstance, MarshaledParamType

大多数com方法的签名如下所示:

STDMETHOD(someFunc) (THIS_ ParamType param) PURE;
通过ComImport将其转换为C#,如下所示:

[PreserveSig()]
int someFunc(MarshaledParamType param);
有什么方法可以在PInvoke签名中保留“THIS_”参数吗?这样我就可以做如下事情:

int someFunc(IntPtr ptrToCOMInstance, MarshaledParamType param);


这是一个伪注释,表示传递给类方法的this指针。你既不在C++中也不在C语言中声明它,它没有显式地通过它。 但是请注意服务器和客户端之间的区别。在服务器中,使用this关键字恢复该指针。在客户机中,您拥有对象引用。例如:

Word.Application app = new Word.Application();
Word.Document doc = new Word.Document();
app和doc变量是您要查找的对象引用。这个内部Word实现应用程序和文档接口的价值。暂时忽略RCW的复杂性

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