.NET:使用配置文件选择具体类

时间:2008-10-25 11:00:23

标签: .net inversion-of-control interface configuration-files concreteclass

(此问题特别在C#中,但通常适用于.NET)

我有一个设计相当好的大型应用程序,并且通过接口分为主要部分(这是为了协助并行开发)。

我们现在有一组主要的具体类来实现所需的接口,但是我们还有其他的具体类用于替代情况和测试。

目前我们在代码的顶层将所有这些类拉到一起:

IMyInterface xComponent = new ConcreteXComponent1();

如果我想换出组件,那么我只需更改该行并重新编译:

// IMyInterface xComponent = new ConcreteXComponent1();
IMyInterface xComponent = new ConcreteXComponentAlternative();

这很好用,但显然需要重新编译 - 我宁愿使用配置文件中的值来选择具体类。

使用配置文件更改具体类的标准模式是什么?我可以使用标准库来解决这个问题吗?

谢谢!

4 个答案:

答案 0 :(得分:4)

您想要查看IoC容器。 (Spring.NET,StructureMap,Windsor等)

答案 1 :(得分:2)

您可以使用Activator.CreateInstance方法。其中一个方法重载采用类型名称,并使用默认构造函数创建它的实例。然后,您可以在配置文件中存储类的类型名称,并从应用程序中读取它。

答案 2 :(得分:1)

答案 3 :(得分:0)

使用IoC容器将创建可以动态加载的池或对象集合。 Romain建议的框架将使用描述对象及其实例化方式的配置文件。