假設我有一個.NET程序集A,它使用反射來加載程序集B和C(也稱爲.NET)。這兩個程序集都實現了許多大型接口(兩者都相同)。當在A中調用一個方法時,它會嘗試讓B完成這項工作。但是,B是不可靠的,可能會拋出異常。現在A有兩種模式,一種是將例外傳播給A的調用者,另一種是在更穩定(但性能較低)的C上調用匹配方法的模式。是否有更好的方式(少代碼)來實現這個方案比包裝所有方法B在所有B的接口的巨大實現中暴露出來的東西,現在只包含每個帶有代碼的調用,如下所示?程序集B和C不知道所選錯誤處理方法的任何內容,因此它們不能實現邏輯。大接口的統一錯誤處理
public class BErrorWrapper : I1, I2, I3{
...
public int DoSomeWork(int num){
if (FailWithExceptions)
{
try
{
return B.DoSomeWork(num);
}
catch(MyLibException e)
{
return C.DoSomeWOrk(num);
}
}
else
{
return B.DoSomeWork(num);
}
}
...
}