Создание экземпляра класса взаимодействия COM
Я пытаюсь открыть CorelDRAW из моей программы, используя C #. До сих пор я мог сделать это, ссылаясь на соответствующую библиотеку com и вызывая
CorelDRAW.Application draw = new CorelDRAW.Application();
draw.Visible = true;
Однако я бы хотел, чтобы моя программа работала с любой версией CorelDRAW, которая поддерживает взаимодействие. Я пытаюсь использовать отражение для загрузки библиотеки взаимодействия во время выполнения, где конкретная DLL может быть выбрана для правильной версии. Посмотрев вокруг, я попробовал следующее.
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);
}
Программа не работает вu.CreateInstance...
не удается, потому чтоCorelDRAW.Application
это интерфейс, а не класс. Я также пытался заменитьCorelDRAW.Application
сCorelDRAW.ApplicationClass
как это доступно, когда я просматриваю Interop.CorelDRAW как ресурс, но потомu.getType...
выходит из строя.
Как я могу заставить это работать? Спасибо'