【问题标题】:Disadvantages of using TLB (and tlbimp.exe) with C#将 TLB(和 tlbimp.exe)与 C# 一起使用的缺点
【发布时间】:2012-05-11 02:20:52
【问题描述】:

我们正在将一家通信公司的软件集成到我们自己的软件中,用于接听电话、转接电话、与客户匹配号码等。

他们为我们提供了 API 文档,其中包括一个 TLB 文件。我们已经使用 tlbimp 工具创建了一个程序集,我们现在想在我们的实现中使用它。

一些由 tlbimp 创建的类被赋予了内部构造函数,使得它们无法实例化。我认为在这种情况下应该没问题,因为另一个类应该返回这些类的实例。

这让我想到:在使用 tlbimp.exe 和整个 TLB 时,我还应该注意哪些其他陷阱?手动创建 DllImport/ComImport/PInvoke 代码会更好吗?

【问题讨论】:

    标签: c# pinvoke com-interop tlbimp typelib


    【解决方案1】:

    您不能调用类型库中声明的那种 COM 接口方法。实现 COM 服务器的 DLL 不导出方法。您可以将后期绑定与反射或 dynamic 关键字一起使用,但这很痛苦且容易出错。使用导入库,这就是它存在的原因。

    【讨论】:

      【解决方案2】:

      一般来说,如果你有一个 TLB,我至少会通过使用 tlbimp 生成的程序集来开始我的工作。

      该工具本身被广泛使用,并根据 TLB 中提供的定义生成正确的代码。我见过一些结果代码不正确的情况,但它几乎总是回到非常复杂的数组编组情况,或者 TLB 作者只是简单地添加了错误的 COM 注释的地方。

      如果您确实发现了任何问题,那么您应该考虑开始手动编写修复代码。但我当然不会那样开始。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-18
        • 1970-01-01
        • 2021-03-16
        相关资源
        最近更新 更多