我想要对我的 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;
}