首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不同版本的PDFCreator COM互操作

不同版本的PDFCreator COM互操作
EN

Stack Overflow用户
提问于 2013-03-27 21:13:51
回答 2查看 4.2K关注 0票数 4

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

另外,我也不确定PDFCreator接口是否真的改变了。在COM对象的确切版本上有没有一些锁定,我可以在生成Interop库时简单地关闭它?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-28 04:35:17

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

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

代码语言:javascript
运行
复制
Dim myObj As Object
myObj = CreateObject("PDFCreator.clsPDFCreator")

然后,您可以在myObj上调用方法,但缺点是,如果您调用了一个不存在的方法或使用了错误的参数,IntelliSense将无法工作,并且VB.Net编译器不会引发任何错误。

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

票数 0
EN

Stack Overflow用户

发布于 2013-03-28 05:57:12

因此,基于yms的回答,我找到了正确的方向:)

使用System.Type和神奇的dynamic关键字,.NET 4.0支持类似于VB的后期绑定COM对象。

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

代码语言:javascript
运行
复制
    System.Type pdfCreatorType = System.Type.GetTypeFromProgID("PDFCreator.clsPDFCreator");
    dynamic comPdfCreator = System.Activator.CreateInstance(pdfCreatorType);

    comPdfCreator.cStart("", true);

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15659732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档