C# 我可以使对象类型可配置吗?

C# 我可以使对象类型可配置吗?,c#,.net,C#,.net,在代码中,我有一个定义如下的变量 A a = new A(); 我想在app.config中配置A,这样我只需修改app.config即可更改为B。我想知道我是否可以用C#?来做这件事,你可能会做得有点不同,但使用的是所谓的 我最喜欢的是,但是你应该很容易在这里的某个地方找到它们的列表 编辑 我忘了提。它可以通过添加到.net 4.0中的新动态功能来实现一些功能。看一看,这是一个成熟的开源项目,很好地满足了您的需求。如果您不想直接使用该库,您可以浏览源代码以获得有关实现的想法。我觉得您这样做是

在代码中,我有一个定义如下的变量

A a = new A();

我想在app.config中配置A,这样我只需修改app.config即可更改为B。我想知道我是否可以用C#?

来做这件事,你可能会做得有点不同,但使用的是所谓的

我最喜欢的是,但是你应该很容易在这里的某个地方找到它们的列表

编辑
我忘了提。它可以通过添加到.net 4.0中的新动态功能来实现一些功能。

看一看,这是一个成熟的开源项目,很好地满足了您的需求。如果您不想直接使用该库,您可以浏览源代码以获得有关实现的想法。

我觉得您这样做是错误的

从您发布的内容来看,我怀疑您希望能够在运行时使用大部分相似但不同的类(取决于某种配置或运行时逻辑)


为此,我强烈建议重新设计/重新思考您的问题。对于的设计模式来说,这听起来是完美的用例(结合了一些决策逻辑,您认为这些决策逻辑适合决定要实例化哪个具体类。

您的意思是要基于类型名将类型实例化为字符串?请看Activator.CreateInstance().

正如大家所说,国际奥委会的容器是最好的选择。 或者你可以使用暴力的方式:

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

    return obj as IDynamicObject;

查找“依赖项注入”或“控制反转”。只是想知道这样做的目的是什么?我可以看到它在日志记录场景中很有用。其中a和B都是基本日志记录类型。在您的实时环境中,最好登录到数据库,而在开发环境中,您可能只想使用文本文件。