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

通过互操作在VB6中使用VB.NET类需要类具有构造函数吗?,vb.net,vb6,constructor,com-interop,Vb.net,Vb6,Constructor,Com Interop,当我试图在VB6中通过互操作创建VB.NET对象时,我注意到如果我的VB.NET类没有构造函数,就会出现此错误: 错误430-类不支持自动化 我所要做的就是在VB.NET类中放置一个空构造函数,例如: Public Sub New() End Sub 避免了错误。这是预期的行为吗?VB6使用COM类的类工厂通过COM创建对象。底层方法是IClassFactory::CreateInstance()。此方法不允许向工厂传递任何参数。因此,[ComVisible].NET类必须具有不接受任何参数

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

错误430-类不支持自动化

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

Public Sub New()

End Sub

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

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


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

是。用C#包装的Com类必须具有无参数构造函数。这个限制是双向的。我发现如果我没有构造函数,就会出现上述错误。它似乎工作的唯一方式是如果放入无参数构造函数。