【发布时间】:2015-01-19 11:10:33
【问题描述】:
我正在尝试使用 InvokeMember 调用 COM 服务器的方法。 该方法具有以下签名:
void InsUpdOpInstance(
[in] long inIdOperDescr,
[in] long inIsWait,
[in] VARIANT stVariables,
[in] long inIdProc,
[in, out] VARIANT* inIdOperInst,
[out] VARIANT* inReturnCode,
[out] VARIANT* stErrorMessage);
我的问题是取回 inIdOperInst 参数值。 以下代码不起作用:
var parameters = new object[] {12,0,"test",25655,DBNull.Value,null,null};
ParameterModifier modifier = new ParameterModifier(parameters.Length);
modifier[4] = true;
modifier[5] = true;
modifier[6] = true;
var ret = WFType.InvokeMember("InsUpdOpInstance",BindingFlags.InvokeMethod,null,Server,parameters,new ParameterModifier[]{modifier},null,null);
调用参数[4]后不改变值
以下代码工作正常:
dynamic serv = Server;
object inError = null;
object stError = null;
object inId = DBNull.Value;
serv.InsUpdOpInstance(12,0,"test",25655,ref inId,out inError,out stError);
调用参数后inId的值发生了变化
为什么 InvokeMember 不起作用?
【问题讨论】:
标签: c# com marshalling com-server