【发布时间】:2012-02-11 10:00:22
【问题描述】:
我在编写一个旨在向 COM 公开的 .NET 组件时遇到了一些问题。
要公开的类继承自一个基类,这两个基类的 ComVisible 属性都设置为 true。基类确实没有什么特别之处 - 它包含 2 个属性,我用来帮助抽象一些数据库代码。
我可以注册程序集并输入 lib 就好了。但是,一旦我尝试实例化该类,我就会从被调用者那里得到以下异常:
IDispatch.Invoke() 中的错误:0x80020101
我决定在 CScript.exe 中调试它,我得到了同样的错误。所以我重写了没有基类的类,现在我可以毫无问题地创建实例了。
为了公开从同一命名空间中的另一个 .NET 类继承的 .NET 类,我需要做其他工作吗?
【问题讨论】:
-
基类是否在同一个DLL中?
-
如果让父类不可见 COM 会发生什么。
-
一个令人沮丧的事情是EventViewer中似乎没有任何日志信息;它只是死了。另外,我一开始没有在基类上指定 ComVisible 就尝试了它,这仍然会导致相同的错误(它实际上在 VS2010 调试器中显示为“未知错误”,但我知道基于应用程序调用引发的异常的内容类)
标签: c# .net com com-interop