我正在研究一些代码,直接从C#粘贴到当前活动的OpenOffice文档中.我不能包含任何OpenOffice库,因为我们不想打包它们,因此我们使用反射来访问OpenOffice API.
我的问题涉及通过反思使用调度员.我无法弄清楚传递给它的正确参数,由于类型不匹配而给我一个可爱的"TargetInvocationException".
object objframe = GetProperty<object>(objcontroller, "frame");
if (objframe != null)
{
object[] paramlist = new object[2] {".uno:Paste", objframe};
InvokeMethod<object>(objdispatcher, "executeDispatch", paramlist);
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
是我一个人的问题还是你的参数设置错了?另外,你的参数数量是否正确?不过,我可能会遗漏一些东西,如果您已经检查过这些内容,那么很抱歉:
文档说:
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
Run Code Online (Sandbox Code Playgroud)
这向我表明您需要将参数列表定义为
object[] paramlist = new object[5] {objframe, ".uno:Paste", "", 0, null};
Run Code Online (Sandbox Code Playgroud)