次のシナリオがあります。
- サービス コントラクト用の 1 つのインターフェイス (IInterface)
- インターフェイス内で宣言されたイベント(目的については後で説明します)
- このインターフェイスを実装する 1 つのクラス、サービス クラス (MyClass)
- インターフェイス コントラクトを使用してチャネルを開き、イベントを含むすべてのインスタンスのメンバーを公開するプロキシ クラスを取得するクライアント。
次のようなサービス クラスのインスタンスを作成すると:
IInterface instance = (IInterface)new MyClass();
そこから、次のことができます。
instance.Event1 += OnEvent1;
しかし、プロキシクライアントを作成しているとき:
IInterface proxy = new ChannelFactory<IInterface>(....);
Event1 はプロキシ クライアントでどのように公開されますか? プロキシ側のみのイベントですよね?それらはサーバー クラスから完全に切り離されていますね。
だから、私はできる:
proxy.Event1 += OnEvent1;
しかしEvent1
、WCF サーバー クラス インスタンスから呼び出されることはありませんよね?
WCF サーバー クラスが次のようなイベント チェックを行うとどうなりますか。
if (Event1 != null)
{ Event1(); }
...何も起こりません?