我正在添加一个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。为什么并且有办法绕过它?
由于
答案 0 :(得分:2)
当一个接口是一个coclass的默认接口并且它只被该coclass使用时,typelib导入器会这样做。
因此,一种解决方法是在您的类型库中添加另一个虚拟coclass,并使IMyInterface成为默认接口。