什么对象应该进入依赖容器

时间:2011-03-19 08:28:52

标签: dependency-injection castle-windsor

  

可能重复:
  What should be injected as C'tor paramter under DI principles ?

我正在考虑使用Castle Windsor作为我的下一个项目,并且我试图了解哪些对象应该进入依赖容器。我最初的想法是,如果一个对象访问了外部资源,电子邮件服务器,数据库,文件系统等,那么这是进入容器的一个很好的候选者。但是,我认为任何“使用”外部资源的对象也应该进入容器。

使用依赖项容器时,这是一种有效的方法吗?

2 个答案:

答案 0 :(得分:0)

基本上任何具有依赖关系的对象(在构造函数中或通过属性)都应该在那里以及它们自己的依赖关系。您应该考虑为要放入容器的类创建接口或抽象基类,以便可以将它们模拟出来进行测试。

答案 1 :(得分:0)

依赖注入容器是一个对象,它包含某些类型的实现(主要实现某个接口或基类),这些对象用于Resolve对象的依赖关系。

使用DIC有三个阶段:你有一些对象具有一些“依赖关系”(最好是在接口上),它们通过构造函数声明(例如:在Unity中使用InjectionConstructorAttribute)或属性(ex) :使用Unity中的DependencyAttribute;下一步是注册这些依赖项的实现,这可以通过代码或配置文件来实现,ex(unity):

 container.RegisterType<IMyInterface>(MyImplementation);

第三阶段实际上是从容器中解析某种类型,它解决了它的依赖关系(如果它们有任何依赖关系,依此类推),ex。 (统一):

var obj = container.Resolve<IMyInterface>();

因此,在回答你的问题时,应该进入依赖注入容器的是解析其他类型所需的任何类型,或者任何具有自己的依赖关系的类型(必须在某些时候向容器注册) )。

我希望这会有所帮助:)