.NET クラスを COM に公開したいと考えています。それはかなり簡単です:
- ComVisible にする必要があるそのクラスのメンバーを定義するインターフェイスを作成します。
- これらのメンバーの DispId を自分で定義します
- インターフェイスは
ComVisible
Guid
そのインターフェイスに を割り当てます- そのインターフェースを実装するクラスを作成します
大きな問題ではない。これはすべて機能します。しかし、私の質問は次のとおりです。そのクラスには、COM にも公開したいイベントがいくつかあります。
これも大したことではありませんが、いくつかの例 (MS の ComInterop ツールによって生成された fi コード) を見ると、イベントが別のインターフェイスで宣言されていることがわかります。つまり、あるべきクラスはComVisible
、2 つのインターフェースを実装します。
- 必要な通常のメソッドとプロパティを定義する 1 つのインターフェイス
ComVisible
- であるべきイベントを定義する別のインターフェース
ComVisible
。
さて、私の質問は次のとおりです。なぜですか?この理由は何ですか?
イベントが別のインターフェイスで定義されているのはなぜですか?また、ComVisible
イベントが定義されるべきメソッドとプロパティを含むインターフェイスで定義されていないのはなぜComVisible
ですか?
この背後にある理由は何ですか?