Erstellen einer Instanz einer COM-Interop-Klasse
Ich versuche, CorelDRAW in meinem Programm mit C # zu öffnen. Bisher konnte ich dies tun, indem ich auf die entsprechende com-Bibliothek verwies und aufrief
CorelDRAW.Application draw = new CorelDRAW.Application();
draw.Visible = true;
Ich möchte jedoch, dass mein Programm mit jeder Version von CorelDRAW funktioniert, die interop unterstützt. Ich versuche, Reflection zu verwenden, um die Interop-Bibliothek zur Laufzeit zu laden, wobei die spezifische DLL für die richtige Version ausgewählt werden kann. Vom Umschauen habe ich folgendes versucht.
string path = "Interop.CorelDRAW.dll";
Assembly u = Assembly.LoadFile(path);
Type testType = u.GetType("CorelDRAW.Application");
if (testType != null)
{
object draw = u.CreateInstance("CorelDRAW.Application");
FieldInfo fi = testType.GetField("Visible");
fi.SetValue(draw, true);
}
Das Programm schlägt um fehlu.CreateInstance...
scheitert daranCorelDRAW.Application
ist eine Schnittstelle, keine Klasse. Ich habe auch versucht, zu ersetzenCorelDRAW.Application
mitCorelDRAW.ApplicationClass
da das verfügbar ist, wenn ich Interop.CorelDRAW als Ressource durchsuche, dann aberu.getType...
scheitert.
Wie kann ich das zum Laufen bringen? Vielen Dank!