Omu*_*Omu 44 .net ioc-container inversion-of-control
我听到很多人说使用IoC.Resolve()是一种不好的做法,但我从来没有听说过一个很好的理由(如果它只是测试而不是你可以嘲笑容器,那么你已经完成了).
现在使用Resolve而不是Constructor Injection的优点是你不需要在构造函数中创建具有5个参数的类,并且无论何时你要创建该类的实例,你都不需要提供它.什么
Bry*_*tts 49
IoC.Resolve<>是服务定位器模式的一个示例.该模式强加了一些构造函数注入没有的限制:
在我看来,这些限制将服务定位器模式放在大泥球和依赖注入之间的中间位置:如果必须使用它,则很有用,但到目前为止并非最佳选择.
Krz*_*mic 26
如果创建具有5个依赖项的类,则除IoC.Resolve之外还有其他问题.
拉动依赖项(而不是通过构造函数推送它们)完全忽略了使用IoC框架的重点.您想要反转依赖项.没有你的类依赖于IoC框架,反之亦然.
如果在某些情况下不需要所有依赖项,那么可能应该拆分类,或者通过使它们成为属性依赖项使某些依赖项成为可选项.
您的类取决于容器.除非你提供一个,否则它们将无法工作.无论是真的还是假的都无所谓.它们通过静态依赖性固有地绑定到容器.这会给你额外的工作带来任何你的课程.任何时候你想使用你的类,你需要用它们拖动容器.没有好处!服务定位器只是一切的全局包,这可能违背了面向对象编程的所有原则.