来自Simple Injector文档中的Using the Simple Injector:
注意:在构造函数中调用GetInstance方法是次优的,应尽可能避免使用。但是,使用ASP.NET Web Forms,很难完全避免这种情况。有关替代方案,请参阅“集成指南”。
为什么它不是最理想的?
我确实注意到这种用法可能会导致the container is locked after the first call to resolve的故意限制。因此,如果您注册A,然后创建一个ISomething集合 - 其中一个依赖于A - 然后您使用RegisterAll()
注册该集合,然后您遇到麻烦,因为其中一个ISomethings解析A,阻止随后注册该集合。
然而,我想还有更多的东西"次优的"比这个。
答案 0 :(得分:2)
从你的类型的构造函数中回调容器是sub可选的,因为:
回调容器是anti-pattern called Service Locator。
不幸的是,你指出的文档有点过时,一般来说我们建议不要使用这种类型的构造。因此,ASP.NET Web Forms Integration page使用显式属性注入描述了更好的解决方案。