Я пытаюсь открыть CorelDRAW из своей программы с помощью С#. До сих пор я мог сделать это, сославшись на соответствующую библиотеку 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...
не работает.
Как я могу заставить это работать? Благодарю вас!