通过反射使用C#和OpenOffice

时间:2008-08-14 00:36:02

标签: c# reflection

我正在编写一些代码,直接从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);
}

我该如何解决?

1 个答案:

答案 0 :(得分:1)

只是我或你的参数是错误的方法吗?另外,你有正确数量的参数吗?我可能会遗漏一些东西,很抱歉,如果你已经检查了这些东西:

文档说:

dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

这表明您需要将参数列表定义为

object[] paramlist = new object[5] {objframe, ".uno:Paste", "", 0, null};