I am trying to open CorelDRAW from my program using C #. So far, I could do this by referencing the appropriate com library and calling
CorelDRAW.Application draw = new CorelDRAW.Application(); draw.Visible = true;
However, I would like my program to work with any version of CorelDRAW that supports interoperability. I am trying to use reflection to load the interop library at runtime, where a particular dll can be selected for the correct version. From the look around I tried the following.
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); }
The program crashes when u.CreateInstance... fails because CorelDRAW.Application is an interface, not a class. I also tried replacing CorelDRAW.Application with CorelDRAW.ApplicationClass as it is available when I view Interop.CorelDRAW as a resource, but then u.getType... fails.
How can I make this work? Thanks!
source share