相关疑难解决方法(0)

C#暴露给COM - 接口继承

假设我有一个实现IBaseClass的类BaseClass

然后我有一个继承IBaseClass的接口IClass.

然后我有一个名为class的类,它实现了IClass.

例如:

[ComVisible(true), InterfaceType(ComInterfaceType.IsDual), Guid("XXXXXXX")]
public interface IBaseClass
{
  [PreserveSig]
  string GetA()
}

[ComVisible(true), InterfaceType(ComInterfaceType.IsDual), Guid("XXXXXXX")]  
public interface IClass : IBaseClass
{
  [PreserveSig]
  string GetB()
}

[ComVisible(true), ClassInterface(ClassInterfaceType.None), Guid("XXXXXXX")]
public class BaseClass : IBaseClass
{
  public string GetA() { return "A"; }
}

[ComVisible(true), ClassInterface(ClassInterfaceType.None), Guid("XXXXXXX")]
public class Class : BaseClass, IClass
{
  public string GetB() { return "B"; }
}
Run Code Online (Sandbox Code Playgroud)

当暴露给COM时,如果我创建一个"Class"实例,它就不允许我调用GetA().

在.tlb文件中查找我的IDL时,我的IClass界面如下所示:

[
  odl,
  uuid(XXXXXXXXXXXXXXXXXXXXX),
  version(1.0),
  dual,
  oleautomation,

]
interface IClass : IDispatch {
    [id(0x60020000)]
    BSTR GetB(); …
Run Code Online (Sandbox Code Playgroud)

.net c# com inheritance

12
推荐指数
2
解决办法
9819
查看次数

标签 统计

.net ×1

c# ×1

com ×1

inheritance ×1