2011-01-20 71 views
2

在代码中,我已经定义像我可以使对象类型可配置吗?

A a = new A(); 

我想使在App.config阿来配置的变量,所以可改变为通过修改在app.config只是B点。我想知道如果我可以使用C#做到这一点?

+16

查看“依赖注入”或“控制反转” – ChrisF 2011-01-20 15:02:49

回答

0

看看Castle Windsor,这是一个成熟的开源项目,可以很好地满足您的要求。如果您不想直接使用该库,则可以浏览源代码以获取实施建议。

0

听起来对我来说,你会以错误的方式去做这件事。根据您发布的内容,我怀疑您希望能够在运行时使用大部分类似但不同的类(取决于某种配置或运行时逻辑)。

为此,我强烈建议重新设计/重新考虑您的问题。对于Abstract Factory.这个设计模式,这听起来很完美的使用案例(结合了一些决定逻辑来决定你想要实例化哪个具体类。

1

你的意思是你想基于它的实例化一个类型?作为一个字符串类型名看一看Activator.CreateInstance()

0

正如大家所说,一个IoC容器去的最佳方式 或者你可以用蛮力方式:

Assembly assembly = Assembly.Load(...); 
    var obj = assembly.CreateInstance(ConfigurationManager.AppSettings["MyDynamicType"], true); 

    return obj as IDynamicObject; 
相关问题