我有一个工作.net winform用户控件,并希望将其转换为COM。我一直在努力寻找一种方法来将此用户控件转换为启用COM (用于VS6 / C ++ 6)。我不确定这是否可行?或者我必须考虑不同的方法?这是界面:
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("C8BDB591-189D-4EB5-A026-7C9FFBEE3A85")]
public interface iMainInterface
{
[DispId(1)]
void ShowMyInterface();
}
这是控件:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(iMainInterface))]
[Guid("F8D26781-5A97-4467-B732-7EAB1A04C3F2")]
public partial class MainInterface : UserControl
{
public void ShowMyInterface()
{
...
}
}
错误消息似乎是针对 [ComSourceInterfaces(typeof(iMainInterface))]
这是错误: 错误2无法注册程序集“MyInterface.dll”。类型'xxx.MainInterface'不支持指定的默认COM接口:'xxx.iMainInterface'Ex PerformReportControl
答案 0 :(得分:1)
[ComSourceInterfaces]只应用于生成事件的接口。它肯定看起来不像iMainInterface有任何事件所以只需删除属性。
你忘了让你的类继承接口。修正:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("F8D26781-5A97-4467-B732-7EAB1A04C3F2")]
public partial class MainInterface : UserControl, iMainInterface
{
public void ShowMyInterface()
{
...
}
}
赞成接口类型的资本I(而不是i)。