(此问题特别在C#中,但通常适用于.NET)
我有一个设计相当好的大型应用程序,并且通过接口分为主要部分(这是为了协助并行开发)。
我们现在有一组主要的具体类来实现所需的接口,但是我们还有其他的具体类用于替代情况和测试。
目前我们在代码的顶层将所有这些类拉到一起:
IMyInterface xComponent = new ConcreteXComponent1();
如果我想换出组件,那么我只需更改该行并重新编译:
// IMyInterface xComponent = new ConcreteXComponent1();
IMyInterface xComponent = new ConcreteXComponentAlternative();
这很好用,但显然需要重新编译 - 我宁愿使用配置文件中的值来选择具体类。
使用配置文件更改具体类的标准模式是什么?我可以使用标准库来解决这个问题吗?
谢谢!
答案 0 :(得分:4)
您想要查看IoC容器。 (Spring.NET,StructureMap,Windsor等)
答案 1 :(得分:2)
您可以使用Activator.CreateInstance
方法。其中一个方法重载采用类型名称,并使用默认构造函数创建它的实例。然后,您可以在配置文件中存储类的类型名称,并从应用程序中读取它。
答案 2 :(得分:1)
答案 3 :(得分:0)
使用IoC容器将创建可以动态加载的池或对象集合。 Romain建议的框架将使用描述对象及其实例化方式的配置文件。