如何将VB.net泛型类型实例强制转换为COM类型



我有很多函数,基本上看起来像…

 Public Function Keys() As Dictionary(Of Integer, myData).KeyCollection

我试图将这个类公开给COM,这样我就可以在Excel中使用它,但VS抱怨…

 Warning: Type library exporter encountered a generic type instance in a signature. Generic code may not be exported to COM.

我认为这意味着我必须将其复制到一个可以导出到COM的类型,我怀疑字符串的安全性?

有人有这样的示例代码吗?

您不能将泛型类型公开给COM,它根本不支持它。Dictionary没有[ComVisible(true)]属性的原因。直观地说,像C++这样的语言,像VBScript或Javascript这样的脚本语言,VB6和VBA等等,都不了解.NET泛型。只有.NET程序才能使用它,而不需要COM互操作。

如果你想公开一个字典,那么你需要创建自己的字典,或者简单地回到旧的哈希表。即[ComVisible],您的类型库将自动包含mscorlib.tlb

最新更新