如何为每个类创建C#配置文件?

时间:2010-01-23 22:58:04

标签: c# configuration

如果我去项目 - > Myproject属性 - >设置我可以为整个项目创建设置文件。但是假设每个类都需要自己的配置文件。是否有类似的方法在班级做到这一点?

举例来说,假设我有一个带有子类福特和本田的父类Car。我想要一个属性YEAR和一段代码来读取YEAR属性。我可以通过使用具有相同YEAR属性的两个配置文件来完成此操作。如果我使用Ford.YEAR和Honda.YEAR,那么我需要两段独立的代码来解析数据,这些代码可能会因为大量的类而变得混乱。

6 个答案:

答案 0 :(得分:2)

配置数据存储在其配置文件中的可执行文件中(无论项目中“设置”文件的数量是多少,它都是单个文件),并且不是特定于类的。您可以为与ClassName.ConfigName等类相关的设置键配置选项设置命名约定。

答案 1 :(得分:2)

它不是真的为此设计的。

您可以使用System.Configuration.ConfigurationSettings类在代码中显式打开文件以从中读取设置。这将是有效的,但设计师将无法帮助您创建设置文件。

您是否在课堂设置方面遇到问题?

另一种可能对您有帮助的方法是创建一个可以放入文件的自定义配置部分。然后,您可以将每个类设置拆分为它自己的配置部分。那可能适合你的目的?

答案 2 :(得分:1)

您可以为子类创建特定的部分:How to: Create Custom Configuration Sections Using ConfigurationSection

启动.net应用程序时,它会获取入口点程序集配置文件并将其加载到内存中。但只有一个。

因此,如果您的MyApplication.exe使用MyLibrary.dll且两者都有配置文件,则只会加载MyApplication.exe.config

答案 3 :(得分:0)

你必须像其他人建议的那样手动完成。但是,我强烈建议不要这样做,因为我认为你最终会遇到配置噩梦。

答案 4 :(得分:0)

根据其他答案,没有配置文件不是特定于类的,您最好创建一个处理检索和设置配置的类(ConfigManager样式的接口)。

我不得不问你,你真的想要每班配置吗?

这听起来像配置管理的噩梦场景。您必须在每个类的基础上接受配置丢失或无效的情况 - 并相应地采取适当的步骤。

如果您的设计要求进行每类配置,那么将它存储在数据库中或使用其他介质可能会更好吗?

答案 5 :(得分:0)

许多当前的IoC容器允许您通过其依赖注入(DI)可能性来执行此类操作。事实上,当DI配置在DI领域风靡一时时,你几乎可以获得所有这些开箱即用的功能。今天,许多IoC容器支持以编程方式设置依赖关系,您可以很容易地将其挂钩到您想要提供的任何XML文件。使用IoC容器StructureMap查看此示例:

IContainer c = new Container();
c.Configure(ce=>
  ce.For(typeof(A)).Use(typeof(A)).WithProperty("Test").EqualTo("Hello"));
var a = c.GetInstance<A>();
Debug.Assert(a.Test == "Hello");

通过解析包含目标类型,属性名称,值,然后调用上述API等信息的XML文件,您可以获得所需的内容。