我想从我的程序中使用C#打开CorelDRAW。到目前为止,我已经能够做到这一点通过引用相应的COM库,并呼吁创建一个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...
失败。
我该如何得到这个工作?谢谢!
我已经得到这方面的工作在一定程度上。我在C#解决方案中创建了5个额外的项目,每个项目都包含对特定版本Corel的引用。然后该项目有一个函数返回我的CorelDRAW.Application对象。然后我可以在主程序中使用该对象的反射。不是最干净的,但到目前为止,这已经足够了。 –