2013-02-22 55 views
0

我有一個正在運行.net winform用戶控件並希望將其轉換爲COM。我一直在努力尋找一種方法來將此用戶控件轉換爲COM啓用(用於VS6/C++ 6)。我不確定這是否可行?或者我必須考慮一種不同的方法?這裏的接口:將.net用戶控件轉換爲COM組件

[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

回答

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)接口類型。

+0

謝謝。有時候,第二組眼睛幫助我度過了美好的時光 – TexasCoder 2013-02-23 04:53:03