1

次のインターフェースを検討してください。

public interface IMyCallback
{
  void SomeEvent(int someArg);
}

これは、WCF サービスから「イベント」を受け取る WCF コールバックのコントラクトです。このインターフェースの私の実装は次のようになります

public class MyCallback : IMyCallback
{
  void IMyCallback.SomeEvent(int someArg)
  {
    OnSomeEvent(someArg);
  }

  protected virtual void OnSomeEvent(int someArg)
  {
    EventHandler<SomeEventArgs> handler = this.SomeEvent;

    if (handler != null)
    {
      handler(this, new SomeEventArgs(someArg));
    }
  }

  public event EventHandler<SomeEventArgs> SomeEvent;
}

これにより、コールバックをインスタンス化し、クライアント コードで SomeEvent イベントをフックできます。サーバーがコールバックを呼び出すたびに、単純な古い .NET イベントを受け取ります。すべてがうまく機能します。

ここで質問があります。このコールバックの作成を自動化するファクトリ クラスを作成して、このアプローチをすべてのプロジェクトと任意のインターフェイスで簡単に再利用したいと考えています。ファクトリは次のように呼び出されます。

var myCallback = CallbackFactory.CreateCallback<IMyCallback>();

このクラスを動的に作成するためにモッキング フレームワークを使用することはできますか? それとも、実装ごとにコードを渡す必要がありますか? または、私が考えていない別のアプローチはありますか?

4

2 に答える 2