【问题标题】:How to intercept whole assembly using Unity如何使用 Unity 拦截整个程序集
【发布时间】:2011-06-20 02:57:03
【问题描述】:

在我当前的项目中,我使用 PostSharp 实现了异常方面。而且 PostSharp 支持将此方面应用于整个程序集,因此我无需为每个方法指定 Exception 属性。

但说到 Unity 2: 我在 Unity 2 中看到了一个使用方法拦截进行异常处理的示例,但它只有在我在 Unity 容器中注册类型并解决它时才有效。

我可以在使用之前解析类型,但是在Unity中,是否可以一次性注册所有类型和方法?

简而言之,使用 Unity 2,我希望像在 PostSharp 中那样拦截一个程序集中的所有方法

【问题讨论】:

  • 在后期还是统一?使用 postsharp 时只需要 1 个声明,您不必在每个方法上都这样做。您的问题不清楚。
  • 为什么不用 PostSharp?你会得到更好的结果。
  • @DustinDavis - 没有许可费用,我不能使用 PostSharp
  • Unity 不能开箱即用,我认为没有一个简单的解决方法可以实现它。
  • @Veeru 您可以使用 PostSharp 入门版创建 LocationInterceptionAspect。没有许可证费用。许可证的成本非常值得功能。

标签: c# unity-container postsharp


【解决方案1】:

您必须编写一些反射来遍历程序集中的所有类型并将它们全部注册到 Unity 中。这不是什么难事——应该只是简单地调用 Assembly.GetTypes() 来检索所有类型,然后遍历它们,使用适当的拦截器将每个类型注册到 Unity 中。

如果您使用成熟的拦截器而不是策略,则默认情况下,它们将处理它们注册的任何类型的所有方法调用。

【讨论】:

    猜你喜欢
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 2019-05-16
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多