当我尝试通过VB.NET
中的互操作创建VB6
对象时,我注意到如果我的VB.NET
类没有构造函数,我会收到此错误:
错误430 - 类不支持自动化
我所要做的就是在VB.NET
类中放置一个空构造函数,例如:
Public Sub New()
End Sub
并避免错误。这是预期的行为吗?
答案 0 :(得分:2)
VB6通过COM创建对象,使用类工厂为COM coclass。底层方法是IClassFactory :: CreateInstance()。此方法不允许将任何参数传递给工厂。因此,[ComVisible] .NET类必须具有不带任何参数的构造函数。
.NET已经为类创建了一个默认构造函数,除非你自己指定一个带参数的构造函数。永远不会使用它,你也可以删除它。现在你也不再需要空的默认构造函数了。