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

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

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

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

IMyInterface xComponent = new ConcreteXComponent1();

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

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

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

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

谢谢!

有帮助吗?

解决方案

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

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top