try/catch 機能を抽象化するメソッドを作成しました。これとまったく同じ try/catch シナリオを持つ約 30 のメソッドがあります。だから私はそれを1つの方法に入れました:
private T Invoke<T>(Func<T> func)
{
try
{
return func.Invoke();
}
catch (Exception ex)
{
throw LogAndThrowFaultException(ex);
}
}
現在、ほとんどのメソッドは次のように呼び出します。
public IEnumerable<PingResponse> GetAllForPingRequest(PingRequest pingRequest)
{
return Invoke(() => PingResponseLogic.GetAllForPingRequest(pingRequest));
}
私の問題は、値を返す必要なくそれを呼び出すメソッドがいくつかあることです。
Invoke<void>(() => CustomVariableGroupLogic.Delete(customVariableGroup));
しかし、私はvoid
そこを使用することはできません。このInvoke()
メソッドは を受け取りますfunc
が、この場合は である必要がありますaction
。Invoke()
いくつかの調査を行ったところ、別のメソッドを作成する必要があるように見えますが、アクションを実行します。ただし、これらの提案は2009年と2010年のものです。Invoke()
のような別のメソッドを作成しなくても、どうにかして func メソッドを使用することは可能Invoke2()
ですか?