【问题标题】:.NET C#: Is it possible to import TLB (semi-)automatically and add PreserveSig to one type?.NET C#:是否可以自动导入 TLB(半)并将 PreserveSig 添加到一种类型?
【发布时间】:2010-10-22 07:50:25
【问题描述】:

我有这个大型 IDL,我要导入到 C# 项目中。

一切都很好,直到我不得不使用一个与 HRESULT 不太兼容的接口 -> COMException 转换(我可以在这里详细介绍,但这不应该是相关的)。

是否可以以某种方式将 PreserveSig 添加到该类型?我想避免在 C# 中手动声明所有 COM 接口的选项。如果有办法从 tlbimp 获取 c# 源文件而不是程序集,那将适合我,但 AFAIK 没有这样的方法。

还有其他选择吗?谢谢。

【问题讨论】:

    标签: c# .net interop


    【解决方案1】:

    您可以使用Ildasm.exe 反编译互操作库,编辑声明并使用 ilasm.exe 将其重新放回原处。使用示例 C# 声明了解如何编辑它。

    或者您可以只在 C# 中声明一个接口。名称无关紧要,只有 GUID 必须匹配。在 Reflector 中打开互操作库并将接口声明复制/粘贴到您的 C# 代码中。更改接口名称并修改导致问题的方法。

    【讨论】:

    • 所以第二个选项意味着,虽然我必须将 TLB 作为一个整体导入,但我可以为违规类型创建另一个 C# 接口,只要 GUID 匹配且名称不匹配自动导入一个,一切都好吗?
    猜你喜欢
    • 2013-11-11
    • 2021-10-16
    • 2013-11-13
    • 2011-08-15
    • 1970-01-01
    • 2020-02-12
    • 2016-11-28
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多