何时应该使用静态IoC容器?

3
一些程序员使用静态类方法访问他们的IoC容器。这只是一个偏好,还是必须这样做?
如果我的自定义成员资格提供程序需要DataContext,我该如何将我的DataContext注入其中而不使用静态类?
我的方法是在自定义成员资格提供程序内部通过静态类访问我的容器。这是正确的解决方案吗?
如果静态方式更受欢迎,我是否必须将我的基础容器保持为单例范围,并在Global.asax中初始化它,并始终通过静态类访问我的容器?
3个回答

8

6
避免使用静态IoC访问或服务定位器模式的最常见原因是它增加了额外的依赖关系,从而使单元测试变得复杂。应尽可能使用构造函数注入。
此外,这里有一个潜在的解决方案,其中有人正在使用自定义成员资格提供程序和依赖项注入。
请参阅这个问题以获取一个很好的讨论,并且您还可以在autofac网站上阅读一些最佳实践

4

没有要求IoC容器必须是静态的,实际上您可以创建任意数量的容器 - 这完全取决于您的需求。正如您可能已经发现的那样,有些情况下需要一个静态容器。


请提供更多细节。我还询问了一些关于静态访问的具体问题。 - AnyOne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接