1

wcf サービスのグローバル エラー処理が必要です。そのため、独自の Operation Invoker を実装したいと考えています。すべてのサービス操作には、基本応答タイプから継承された応答タイプがあります。この基本応答タイプには、操作が成功した場合はフラグがあり、例外によってはエラー コードが返されます (コード スニペットでは省略されています)。同期呼び出しの実装は、さらに下のコードのように見えますが、非同期呼び出しで同じことを行うにはどうすればよいでしょうか?

ところで、一般的にそのアプローチについてどう思いますか?

public class ErrorHandlingOperationInvoker : IOperationInvoker
{
    private IOperationInvoker invoker;

    private ServiceDescription description;

    public ErrorHandlingLoggingOperationInvoker(IOperationInvoker baseInvoker, ServiceDescription serviceDescription)
    {
        this.invoker = baseInvoker;
        this.description = serviceDescription;
    }

    public object Invoke(object instance, object[] inputs, out object[] outputs)
    {
        try
        {
            result = this.invoker.Invoke(instance, inputs, out outputs);
        }
        catch (Exception exception)
        {
            BaseResponse response = (BaseResponse)Activator.CreateInstance(description.SyncMethod.ReturnType);
            response.error = true;
            response.errormessage = exception.message;
            return response;
        }
        return result;
    }
4

0 に答える 0