在代码中,我已经定义像我可以使对象类型可配置吗?
A a = new A();
我想使在App.config阿来配置的变量,所以可改变为通过修改在app.config只是B点。我想知道如果我可以使用C#做到这一点?
在代码中,我已经定义像我可以使对象类型可配置吗?
A a = new A();
我想使在App.config阿来配置的变量,所以可改变为通过修改在app.config只是B点。我想知道如果我可以使用C#做到这一点?
你会做这个有点不同,但使用所谓的dependency injection via an IoC (inversion of control) container。
我的最爱是ninject但你应该很容易在这里找到它们的列表。
编辑 我忘了提及Clay。它可以通过对.net 4.0的新动态添加来执行pretty rad stuff。
看看Castle Windsor,这是一个成熟的开源项目,可以很好地满足您的要求。如果您不想直接使用该库,则可以浏览源代码以获取实施建议。
听起来对我来说,你会以错误的方式去做这件事。根据您发布的内容,我怀疑您希望能够在运行时使用大部分类似但不同的类(取决于某种配置或运行时逻辑)。
为此,我强烈建议重新设计/重新考虑您的问题。对于Abstract Factory.这个设计模式,这听起来很完美的使用案例(结合了一些决定逻辑来决定你想要实例化哪个具体类。
你的意思是你想基于它的实例化一个类型?作为一个字符串类型名看一看Activator.CreateInstance()
正如大家所说,一个IoC容器去的最佳方式 或者你可以用蛮力方式:
Assembly assembly = Assembly.Load(...);
var obj = assembly.CreateInstance(ConfigurationManager.AppSettings["MyDynamicType"], true);
return obj as IDynamicObject;
查看“依赖注入”或“控制反转” – ChrisF 2011-01-20 15:02:49