COM互操作性和继承

时间:2012-02-10 21:57:44

标签: c# .net com com-interop

我遇到了一些与我正在编写的.NET组件有关的问题。

要公开的类继承自基类,这两个类都将ComVisible属性设置为true。基类没有什么特别之处 - 它包含2个属性,用于帮助抽象一些数据库代码。

我可以注册程序集并输入lib就好了。但是,一旦我尝试实例化该类,我就会从被调用者抛出以下异常:

IDispatch.Invoke()中的错误:0x80020101

我决定在CScript.exe中调试它,我得到了同样的错误。所以我重写了没有基类的类,现在我可以创建没有问题的实例。

为了公开从同一名称空间中的另一个.NET类继承的.NET类,我还需要做些额外的工作吗?

1 个答案:

答案 0 :(得分:3)

您不能直接在脚本语言中使用派生接口。脚本引擎仅支持实现单个接口的coclass,即默认接口。换句话说,像vbscript或jscript这样的脚本语言不是支持多重继承的面向对象语言。解决方法是将方法添加到默认接口,该接口返回对第二个接口的引用。不常见,保持简单就是编写脚本的样板。