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

标签 vb.net vb6 constructor com-interop

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

Error 430 - Class doesn't support automation

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

Public Sub New()

End Sub

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

最佳答案

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

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

关于vb.net - 通过互操作在 VB6 中使用 VB.NET 类需要类具有构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13399001/

相关文章:

.net - 使用 CredentialCache.DefaultNetworkCredentials 代表当前用户发送电子邮件

java - Eclipse Java 编辑器可以在方法之间像 .NET 一样格式化吗?

xml - 在vb中删除xml文件节点属性的最简单方法是什么?

constructor - ChainID Solidity 版本 0.6.12

mysql - 如何在我的表单 Vb Net 中没有事件的情况下从数据库 MySQL 获取值

.net - 检查套接字是否在紧凑框架中连接

.net - 将 VB6 容器类升级到 VB.NET

vb6 - 防止关闭表单

scala - 在 Scala 中,如何编写一个带有构造函数的类,而不是所有参数都是类成员?

templates - 为什么我不能让构造函数在显式定义另一个类型参数的同时推导出一个类型参数?