我正在尝试使用C#从我的程序中打开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.ApplicationClass
替换CorelDRAW.Application
(当我浏览Interop.CorelDRAW资源时可用),但这样会导致u.getType...
失败。我该如何使其工作?谢谢!