如何在没有 IDispatch 的情况下创建 VB.NET COM 可见接口?

Posted

技术标签:

【中文标题】如何在没有 IDispatch 的情况下创建 VB.NET COM 可见接口?【英文标题】:How to create a VB.NET COM-visible interface without IDispatch? 【发布时间】:2021-06-12 12:17:46 【问题描述】:

如果我创建一个 COM 可见的 VB.NET 接口,例如:

<ComVisible(True)>
Public Interface IMyInterface
    Sub MyMethod()
End Interface

然后生成的类型库将显示IMyInterface 继承IDispatch。有没有办法只继承IUnknown,而不是IDispatch

【问题讨论】:

【参考方案1】:

像这样使用InterfaceTypeAttribute Class:

<ComVisible(True), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IMyInterface
    Sub MyMethod()
End Interface

【讨论】:

以上是关于如何在没有 IDispatch 的情况下创建 VB.NET COM 可见接口?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不通过 COM 的情况下从 VB6 调用 C++ DLL?

继承接口 & IUnknown , IDispatch 方法定义

如何在不知道查询结果类型的情况下在 EF/VB.net 中运行存储过程?

LPDISPATCH是啥数据类型,他和IDispatch有啥关系

创建 IDispatch .NET COM 类,其中内容仅在运行时可用

我如何在 vb.net 中从 Internet 下载文件(zip)