Kam*_*yar 3 dependency-injection ioc-container inversion-of-control autofac
我正在使用Autofac在我的解决方案中实现IoC,但我怀疑我是否做得对.这是场景:
我有一些Manager类都来自BaseManager类.该BaseManager有一个protected User CurrentUser领域.我正在尝试做的是解决CurrentUser使用Autofac.我编写了一个IUserProvider接口并实现了几个类(例如WebUserProvider和WinformsUserProvider).
然后我在下面注册了我的提供者(例如,在Global.asax):
builder.Register(c => new WebUserProvider(...)).As<IUserProvider>();
Run Code Online (Sandbox Code Playgroud)
container在我的类中访问)?我可以使用单例或服务定位器模式,但看起来它是反模式.那么我应该如何解决我的依赖?这对我来说听起来像是过度工程.为什么你有一个了解用户的基础经理类?有一些经理类是一个代码气味和维护危险本身,因为你抽象太多.你真的需要吗?
如何解析依赖项(在我的类中访问容器)?
您不应该寻找访问容器的方法.容器必须在一个地方初始化一次.您应该通过构造函数注入所有依赖项.container.Resolve<T>使用构造函数注入(或者某些人使用属性注入),使用依赖图中的其他位置和依赖图中的其他位置传递这些依赖项.
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |