如何使用 Unity 拦截整个程序集
在我当前的项目中,我使用 PostSharp 实现了异常方面。而且 PostSharp 支持将这一方面应用于整个程序集,因此我无需为每个方法指定 Exception 属性。
但说到 Unity 2: 我在 Unity 2 中看到了一个使用方法拦截进行异常处理的示例,但只有当我在 Unity Container & 中注册类型时它才起作用。解决它。
我可以在使用之前解析类型,但是在 Unity 中,是否可以注册所有类型和类型?单次拍摄的方法?
简而言之,使用 Unity 2,我希望拦截程序集中的所有方法,就像我们在 PostSharp 中所做的那样
In my current project i have implemented Exception Aspect using PostSharp. And PostSharp support applying this aspect for entire assembly, so i no need to specify the Exception attribute to each and every method.
But when it comes to Unity 2:
I have seen one sample in Unity 2 for Exception handling using method interception, but it is working only if i register the Type in Unity Container & resolve it.
It's fine for me to resolve the Type before using it, but in Unity, is there anyway to register all types & methodes in single shot?
In short, using Unity 2, i'm looking to intercept all methods in an assmebly just like we do in PostSharp
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须编写一些反射来迭代程序集中的所有类型并将它们全部注册到 Unity 中。这并不是什么太大的困难 - 应该只是简单地调用 Assembly.GetTypes() 来检索所有类型,然后迭代它们,使用适当的拦截器将每个类型注册到 Unity 中。
如果您使用成熟的拦截器而不是策略,它们将默认作用于它们注册的任何类型的所有方法调用。
You would have to write some reflection to iterate through all the types in your assembly and register them all in Unity. This isn't too much of a hardship - should be just a simple call to Assembly.GetTypes() to retrieve all types and then iterate over them, registering each one into Unity with the appropriate interceptor.
If you use full-blown Interceptors rather than Policies they will by default act over all method calls on any type that they are registered with.