Hallo,
ich habe folgendes Problem. Ich möchte aus C# heraus eine Methode einer mit Visual Basic 6 erstellten COM-Dll aufrufen. Ansich ja kein Problem. Nur erwartet die Visual Basic Methode als Eingabeparameter ein Objekt vom Typ IXMLDOMElement aus dem msxml4.
Bis jetzt habe ich folgendes versucht:
Type OldCOMDLL;
Object OldCOMInst;
Object[] para
para[0] = Data.DocumentElement.ChildNodes;
OldCOMDLL = Type.GetTypeFromProgID("TS_ETC.CreateHWSystem");
OldCOMInst = Activator.CreateInstance(OldCOMDLL);
OldCOMDLL.InvokeMember("PerformAction",System.Reflection.BindingFlags.InvokeMethod,null,OldCOMInst,para);
Die aufgerufenen Methode bekommt zwar ein Objekt geliefert kann damit aber leider nichts anfangen.
Daher meine Frage, wie kann ich aus C# heraus eine COM Methode aufrufen und ihr eine .Net XmlNode als msxml4 IXMLDOMElement übergeben?
ich würde hier eher eine struct schreiben, welche den VB-type nachbildet, und dann die methode per dll-import als extern aufrufen und die struct übergeben.
grtz
chief
Hi,
das mit dem Struct funktioniert leider nicht, da es sich ja um ein IXMLDOMElement Objekt handelt, welches vom MSXML2 bereitgestellt wird.
Aber ich habe jetzt heraus, dass wenn ich übber interop auf den MSCML2 zugreife und XMLDOMDocument anlege. Dieses mit Daten fülle und dann mir eine ChildNode davon geben lasse, dann ist diese ja auch ein COM-Objekt und kann ohne Probleme als Eingabeparameter meiner COM-Dll genutzt werden.
Das finde ich aber ist keine "feine" Lösung. Ich möchte ja die System.Xml Möglichkeiten nutzen und dann erst die fertigen Daten an meine Dll übergeben. Gibt es eine einfache Möglichkeit umd eine XmlElement Objekt in ein IXMLDOMElement COM-Objekt zu "parsen"?