通过interop在VB6中使用VB.NET类需要类有构造函数吗?

时间:2012-11-15 13:59:09

标签: vb.net vb6 constructor com-interop

当我尝试通过VB.NET中的互操作创建VB6对象时,我注意到如果我的VB.NET类没有构造函数,我会收到此错误:

  

错误430 - 类不支持自动化

我所要做的就是在VB.NET类中放置一个空构造函数,例如:

Public Sub New()

End Sub

并避免错误。这是预期的行为吗?

1 个答案:

答案 0 :(得分:2)

VB6通过COM创建对象,使用类工厂为COM coclass。底层方法是IClassFactory :: CreateInstance()。此方法不允许将任何参数传递给工厂。因此,[ComVisible] .NET类必须具有不带任何参数的构造函数。

.NET已经为类创建了一个默认构造函数,除非你自己指定一个带参数的构造函数。永远不会使用它,你也可以删除它。现在你也不再需要空的默认构造函数了。