将.net用户控件转换为COM组件

时间:2013-02-22 20:44:03

标签: com user-controls com-interop

我有一个工作.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

1 个答案:

答案 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)。