我们的应用程序中的生命周期范围很小。能够截获在autofac中注册的所有服务会很有趣。通过这样做,我们可以确切地看到代码在每个生命周期范围内使用的路径以及使用哪个方法参数。不是真的可用于生产,但是对于调试/诊断/重构来说真的非常棒,因为您可以创建整个图片而不仅仅是单元级别。拦截所有服务
但是AFAIK只能为每个注册注册一个拦截器?
我们的应用程序中的生命周期范围很小。能够截获在autofac中注册的所有服务会很有趣。通过这样做,我们可以确切地看到代码在每个生命周期范围内使用的路径以及使用哪个方法参数。不是真的可用于生产,但是对于调试/诊断/重构来说真的非常棒,因为您可以创建整个图片而不仅仅是单元级别。拦截所有服务
但是AFAIK只能为每个注册注册一个拦截器?
使用Autofac.Extras.DynamicProxy2库开箱即可支持这样的事情。你可能实现类似的东西,使用类似于Autofac.Extras.DynamicProxy2的填充码的每个组件处理OnActivating一个模块,但你会遇到麻烦一样...
一般像这样的问题,通过面向方面编程解决方案(例如,PostSharp)或分析器得到解决(例如,ANTS)...或两者的组合。如果您有能力,您可能需要查看这些解决方案。
有关我在谈论什么类型的模块实现的示例,check out the log4net integration page on the Autofac wiki。这显示了如何处理系统中每个组件的OnPreparing。你可以做同样的事情,但是应该使用OnActivating来代替use the sample on the Lifetime Events wiki page来向你展示如何将一个已解决的事情交换为另一个(交换生成的代理的真实对象)。