c# - Unity 拦截和异常

标签 c# inversion-of-control unity-container

我目前正在处理一个问题,我有很多 iterfaces 和它们的实现都是统一创建的。这些类包含一些定期抛出异常的方法,我想围绕这些类创建一个动态代理,这样我就可以捕获在其他地方处理它们的方法中发生的所有异常。

当我在玩 Unity 时,我想知道是否可以使用 Unity Interception 来完成这样的事情。

即创建一个 TransparentProxyInterceptor 并在这些方法的调用周围包装一个 try-catch block 。 这完全有可能还是我走错了方向? 谢谢

最佳答案

是的,Unity拦截(AOP)是处理异常处理的绝佳方式。您可以添加各种行为,例如:

  • 写入日志文件或事件日志
  • 发送电子邮件
  • 增加性能计数器
  • 超时或锁定异常时自动重试
  • 重新抛出一个不同的错误

您的调用处理程序将类似于:

public override IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
    IMethodReturn result = getNext()(input, getNext);

    if (result.Exception != null)
    {
        // do something
    }

    return result;
}

关于c# - Unity 拦截和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1012348/

相关文章:

c# - 根据 orderid 保存单独的 xml 文件

c# - 如何在 ServiceStack.net 中使用 Funq 注册多个 IDbConnectionFactory 实例

c# - MVC 6 IUrlHelper 依赖注入(inject)

unity-container - 拆分统一配置文件

c# - unity自动注入(inject)

c# - 使用 Unity 注册 Mock 对象的问题

c# - C# 中的 task.continuewith 与数据流

c# - 在策略模式中,处理共享行为的最佳方式是什么?

c# - 在 app.config 中添加自定义部分后出现 System.InvalidCastException

java - 没有bean符合注入(inject)到注入(inject)点的条件