简单注入器:自动构造函数注入递归
本文关键字:构造函数 注入 递归 注入器 简单 | 更新日期: 2023-09-27 18:03:20
我试图了解在SimpleInjector.NET中如何自动构造函数注入。我的工作源代码来自code Project文章(v1.5.0.12199)。
我已经看了容器的GetInstance()代码和InstanceProducer的GetInstance()代码,但我没有看到任何递归调用。
有人能指出自动构造函数注入的递归发生在哪里吗?
从v1.5版本到当前的v2.5框架,容器中有很多变化。在旧版本中,事情是如何完成的,我不记得了,但这就是当前v2.5版本中发生的事情(当然,将来可能会发生变化,因为它们是实现细节)。
如果您想查看发生这种情况的方法,您需要转到Registration
类的私有BuildConstructorParameters
方法(再次注意,我在这里谈论的是v2.5源代码)。该方法调用Type.GetParameters
并迭代它们,并为参数的表达式请求配置的IConstructorInjectionBehavior
类型。DefaultConstructorInjectionBehavior
将调用Container.GetRegistration
来获得相应参数的InstanceProducer
,从而结束循环。
- 容器。GetInstance
- InstanceProducer。GetInstance
- InstanceProducer。BuildInstanceCreator
- InstanceProducer。BuildExpressionInternal
- 登记。BuildExpression
- 登记。BuildTransientExpression
- 登记。BuildNewExpression
- 登记。BuildConstructorParameters
- 登记。BuildParameterExpressionFor
- DefaultConstructorInjectionBehavior。BuildParameterExpression
- InstanceProducer。BuildExpression
- InstanceProducer。BuildExpressionInternal <-递归从这里开始
- 登记。BuildExpression