2008-08-14 6 views
5

Ich arbeite an etwas Code in das gerade aktive OpenOffice Dokument direkt aus C# einzufügen. Ich kann keine OpenOffice-Bibliotheken einschließen, da wir sie nicht packen wollen. Daher verwenden wir Reflection, um auf die OpenOffice API zuzugreifen.Verwendung von C# mit OpenOffice durch Reflexion

Meine Frage beinhaltet die Verwendung eines Dispatcher durch Reflexion. Ich kann die korrekten Parameter nicht herausfinden, die zu ihm passen, mir eine schöne "TargetInvocationException" wegen der nicht übereinstimmenden Typen gebend.

object objframe = GetProperty<object>(objcontroller, "frame"); 
if (objframe != null) 
{ 
    object[] paramlist = new object[2] {".uno:Paste", objframe}; 
    InvokeMethod<object>(objdispatcher, "executeDispatch", paramlist); 
} 

Wie kann ich es beheben?

Antwort

1

Ist es nur ich oder sind Ihre Parameter falsch? Haben Sie auch die richtige Anzahl von Parametern? Ich konnte etwas obwohl fehlt, so leid, wenn Sie bereits dieses Zeug überprüft haben:

Die Dokumentation sagt:

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

Was mir zeigen würde, dass Sie Ihre Parameterliste als

definiert haben müssen
object[] paramlist = new object[5] {objframe, ".uno:Paste", "", 0, null};