私は、WCF インターフェイス プロキシに似たクラスを作成していますが、そのクラスには特殊ではあるがボイラープレートの余分なコードが含まれています。ボイラープレート コードを抽出し、ジェネリックまたはその他のメカニズムを使用して、クラスの内部インスタンスへの呼び出しをラップしたいと考えています。
public interface IMyInterface
{
long fn1(int param1, int param2);
}
public class MyInterfaceProxy : IMyInterface
{
// generated code
}
public class MyClass : IMyInterface
{
private MyInterfaceProxy _myProxy; // implements IMyInterface
public long fn1(int param1, int param2)
{
long result = null;
CallMethod(
delegate(IMyInterface svc)
{
result = svc.fn1(param1, param2);
});
return result;
}
private T CallMethod( ??? )
where T : class
{
T result = null;
// some boilerplate code
// Call the delegate, passing _myProxy as the IMyInterface to act on
// some more boilerplate code
return result;
}
}
それが役立つ場合、定型コードは再試行ロジック、タイムアウト動作、標準化された例外処理動作などを表すことができます。
だからここに私の質問があります:
- この問題を解決するための標準的な方法または推奨される方法はありますか?
- ジェネリックが好ましいメカニズムである場合、CallMethod 関数のシグネチャは何ですか?