0

動作している.netwinformユーザーコントロールがあり、それを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 に答える