我想在IDL文件中声明一个托管类(内置在C#/ .NET中),但是当我为它添加一个coclass时,我会在构造函数完成并返回时获得一个InvalidCastException。 (无法将对象'MyThing'强制转换为'MyThingClass'。)
所以在我的测试应用程序(也是C#/ .NET)注册tlb之后,它理解足以调用真正的构造函数。我甚至可以调试它。一切都很有效,直到它必须退出构造函数。
我考虑过尝试使用importlib将DLL拉入IDL,但我需要在构建之前使用tlb(鸡或鸡蛋问题)。
谷歌搜索问题只会导致简单的投射问题。
有什么想法吗?
答案 0 :(得分:0)
通常,我们创建一个COM接口,然后确保该类实现该接口。并非所有.NET类都可以被VB6理解,这从一开始就是一个问题。有两本关于这个主题的书,我非常清楚地推荐阅读:
.NET 2.0 Interoperability Recipes和
Professional Visual Basic Interoperability。
第二本书比较老,涵盖了.NET 1,但仍有一些有用的要点。
我的猜测,根据你提到的内容,你正在返回一个VB类(好吧,这可能是VC ++,或其他东西)无法弄清楚的类。