我正在寫一個類似於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函數的簽名是什麼?
您可以使用基類並使CallMethod成爲基類中的'protected'方法嗎? – 2013-03-01 01:22:52
劃傷我以前的評論,這似乎並不是你所要求的。我不確定我是否按照你的要求提供,但就呼叫簽名而言,你可以使用Func?看起來像是CallMethod的簽名。有關Func 的更多信息,請參閱[此鏈接](http://msdn.microsoft.com/zh-cn/library/bb549151.aspx)。 –
2013-03-01 01:30:48