我试图了解如何在SimpleInjector.NET中完成自动构造函数注入。我的工作源代码来自Code Project文章(v1.5.0.12199)。
我查看了Container的GetInstance)()代码以及InstanceProducer的GetInstance()代码,但我没有看到任何递归调用。
有人可以指出自动构造函数注入的递归发生在哪里吗?
答案 0 :(得分:1)
从版本v1.5到当前的v2.5框架,容器发生了很多变化。在旧版本中我无法完成的事情如何回忆,但这是当前v2.5版本中发生的事情(当然,事情可能会在未来发生变化,因为它们是实现细节)。
如果您想查看发生这种情况的方法,您需要转到BuildConstructorParameters
类的私有Registration
方法(请再次注意,我正在讨论v2。这里有5个源代码)。此方法调用Type.GetParameters
并迭代它们,并为配置的IConstructorInjectionBehavior
类型询问参数的表达式。 DefaultConstructorInjectionBehavior
会调用Container.GetRegistration
来获取该参数的正确InstanceProducer
并关闭循环。
所以完整的堆栈跟踪将是这样的(按自上而下的顺序):