1

(这个问题专门在 C# 中,但一般适用于 .NET)

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

我们现在有一组主要的具体类来实现所需的接口,但我们也有额外的具体类集用于替代情况和测试。

目前,我们将所有这些类放在代码的顶层:

IMyInterface xComponent = new ConcreteXComponent1();

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

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

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

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

谢谢!

4

4 回答 4

4

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

于 2008-10-25T11:07:28.100 回答
2

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

于 2008-10-25T11:17:03.930 回答
1

试试工厂模式

http://en.wikipedia.org/wiki/Abstract_factory_pattern

于 2008-10-25T11:03:57.843 回答
0

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

于 2008-10-25T11:29:39.833 回答