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!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage