0

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

4

1 回答 1

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

于 2013-02-22T23:20:02.650 回答