使用Visual Studio添加COM引用将重命名Interop Assembly中的接口

时间:2009-08-21 20:26:56

标签: .net visual-studio interop tlbimp

我正在添加一个C ++ COM dll作为C#项目的引用(Visual Studio 2008)。 VS添加引用,但生成的互操作库不反映原始typelib(.idl)定义中的命名。这是我的库定义的样子:

[
   uuid(...),
   helpstring("MyLib")
]
library MyLib
{    
    [
        uuid(...),
        helpstring("MyCom CoClass")
    ]
    coclass MyComCoClass
    {
        [default] interface IMyInterface;
        interface IMyInheritedInterface;
        interface IMyBaseInterface;
    };
}

因此,IMyInterface继承自IMyInheritedInterface,后者继承自IMyBaseInterface。我希望在添加此COM的.dll时可以使用所有这些接口。在为上面的类型库生成的互操作程序集VS中,IMyInterface变为MyInterface。为什么并且有办法绕过它?

由于

1 个答案:

答案 0 :(得分:2)

当一个接口是一个coclass的默认接口并且它只被该coclass使用时,typelib导入器会这样做。

因此,一种解决方法是在您的类型库中添加另一个虚拟coclass,并使IMyInterface成为默认接口。