私は、すべて同じ型を返す異なるパラメータを取るメソッドを持つ、異なる型のいくつかのオブジェクトを持っています。これらの方法は失敗する可能性があります。オブジェクトとそのメソッドを受け取り、メソッドが失敗したかどうかを示し、失敗が発生したオブジェクトを示す関数を作成する方法はありますか? Result オブジェクトを変更することはできず、それを呼び出したオブジェクトに関する情報を保持していません。
これは少し冗長だと思います:
Result resultA = A.something();
if(resultA.Failed) return new Status{Failed=A.GetType().ToString()};
Result resultB = B.somethingElse(3);
if(resultB.Failed) return new Status{Failed=B.GetType().ToString()};
Result result3 = C.someOtherThing("apple");
if(resultC.Failed) return new Status{Failed=C.GetType().ToString()};
// Do some processing of the results (will succeed if A,B,C succeeded)
return new Status {Failed=null, Success=true};
それをすべて関数にカプセル化する方法はありますか? それは非常に繰り返されているようです。A、B、および C は有用な基底クラスから継承されず、それらのメソッドはすべて異なるパラメーターを取り、異なる名前を持っています。
そうは言っても、私は Status クラスにアクセスでき、この関数の戻り値にもアクセスできます。関数は戻る必要はなく、代わりに例外をスローできます。障害が発生した場合、関数はすぐに壊れる可能性があります。