答案 0 :(得分:1)
您可以使用C#4.0的dynamic
解决许多与COM通信时遇到的问题。
dynamic
个对象和可选参数来缓解这些痛苦。
答案 1 :(得分:1)
动态在这种情况下无济于事,因为你在谈论一个VB6应用程序引用一个COM组件,该组件在VB6(或其它)中是WAS,但你现在想要成为VB.net(或C#)。 / p>
尽管如此,你应该可以做到这一点。
您需要使用OLEView(或类似的东西)为您要替换的COM DLL生成MIDL。这将为您提供该DLL中定义的所有类和接口的特定GUIDS。
然后你需要编写DLL的.net版本,为每个类和接口指定EVERY SINGLE GUID。
您需要查看.net属性的文档:
标记有ComVisible特性 GUID InterfaceType
可能还有一些。这些attrs允许您专门标记GUID用于您的dll中的对象和接口。
基本上,你正在努力的是当你为两个DLL(旧的和新的)生成Typelib时,你应该得到相同的tlbs。如果不这样做,新的将不会与旧版本兼容。