假设我有两个设置(为了简单起见)改变了我的类型在可重用的库中的行为。传播行为到层次结构的正确方法
我可以定义一个配置类:
class Config {
public bool Behaviour1 { get; set; }
public bool Behaviour2 { get; set; }
}
比我做这样的事情,我必须从组成根(无论国际奥委会处理)整个层次传播实例。
代码将被一大堆条件语句侵入,从而降低可读性,可维护性和可扩展性。
定义两种行为类型会不会更好?
public class Behaviour1 : IBehaviour1 {}
public class Behaviour2 : IBehaviour2 {}
移除其他类型从Config
获得的全局依赖关系。比需要行为的每个班级取决于IBehaviourX
,其工厂将在Config
类型的基础上注入适当的具体。
这样只有少数顶级类型将取决于配置和分配行为(原谅双关语)的行为将不会传播到整个层次。
我对这种情况下的解决方案感兴趣。
+1 @pmacnaughton和这个答复,因为这是最适合我的问题的模式。关于这种情况下的IoC,我会在没有框架的情况下进行。正如解释[这里](http:// stackoverflow。com/questions/14681779/locate-the-correct-composition-root-for-a-net-library)_poor-man-injection_可能适合可重用的库。 – jay 2013-03-09 07:43:55