我们的应用程序中的生命周期范围很小。能够拦截autofac中注册的所有服务将会很有趣。通过这样做,我们可以确切地看到代码为每个生命周期范围采用的路径以及使用的方法参数。不是真的可以用于生产,但是当你在整个画面而不仅仅是单元级别时非常适合调试/诊断/重构。
但AFAIK只能为每次注册注册一个拦截器吗?
答案 0 :(得分:0)
使用Autofac.Extras.DynamicProxy2库开箱即可支持此类内容。您可以使用类似于以下代码的方式实现类似于为每个组件处理OnActivating的模块。 Autofac.Extras.DynamicProxy2中的内容,但你会遇到麻烦......
通常这样的问题可以通过面向方面的编程解决方案(例如PostSharp)或剖析器(例如ANTS)......或两者的组合来解决。如果你有能力,你可能想要研究这些解决方案。
有关我正在谈论的模块实现的示例,check out the log4net integration page on the Autofac wiki。这显示了如何为系统中的每个组件处理OnPreparing。您可以执行相同的操作,但是处理OnActivating而不是use the sample on the Lifetime Events wiki page来向您展示如何将一个已解析的东西交换为另一个(将实际对象交换为生成的代理)。