PDFCreator COM与不同版本互操作

时间:2013-03-27 13:13:51

标签: c# pdf interop

我需要从C#应用程序连接到PDFCreator COM interface。为此,我使用VS生成的Interop包装器。但是有些客户端有不同版本的PDFCreator(我有1.2.1,有些有1.4.3),如果我使用Interop为1.2.1生成,我在使用包装器时会遇到异常。有没有办法解决?所以我的应用程序可以支持多个版本的PDFCreator?

另外,我不确定PDFCreator接口实际上是否已更改。是不是对COM对象的确切版本有一些锁定,我可以在生成Interop库时简单关闭?谢谢。

2 个答案:

答案 0 :(得分:8)

所以,根据yms的回答,我找到了正确的方向:)

.NET 4.0使用System.Type和魔术dynamic关键字支持与VB类似的后期绑定COM对象。

如何使用动态绑定运行PDFCreator的简单示例:

    System.Type pdfCreatorType = System.Type.GetTypeFromProgID("PDFCreator.clsPDFCreator");
    dynamic comPdfCreator = System.Activator.CreateInstance(pdfCreatorType);

    comPdfCreator.cStart("", true);

这就像一个魅力,你不需要为每个新的PDFCreator版本重新编译你的互操作程序集。

答案 1 :(得分:0)

如果你不怕使用VB.Net而不是C#,你可以尝试使用旧的VB后期绑定功能和PDFCreator的progid。

创建新实例的代码如下所示:

Dim myObj As Object
myObj = CreateObject("PDFCreator.clsPDFCreator")

然后你可以在myObj上调用方法,但缺点是IntelliSense不起作用,如果调用不存在的方法或使用错误的参数,VB.Net编译器不会引发任何错误。

免责声明:我没有对此进行测试,使用风险自负