リフレクションを使用してアセンブリ B と C (これも .NET) を読み込む .NET アセンブリ A があるとします。これら 2 つのアセンブリは両方とも、多数の大きなインターフェイスを実装しています (両方とも同じです)。メソッドが A で呼び出されると、B に作業を行わせようとします。ただし、B は信頼性が低く、例外をスローする可能性があります。現在、A には 2 つのモードがあります。1 つは例外を A の呼び出し元に伝播するモードで、もう 1 つはより安定した (しかしパフォーマンスが低い) 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);
}
}
...
}