读/写和访问设置的最佳实践(不使用Windows设置)

时间:2016-06-09 08:14:30

标签: c# xml

首先要说的是我不能使用内置的Properties.Settings,因为这些设置存储在一个XML文件中,供多个人使用(不是同时使用,而是通过版本控制)。 / p>

我正在开发一个代码生成工具,允许用户具体说明所有生成文件的输出位置,以及其他项目特定设置。

目前,在应用程序中我有一个名为ProjectSettings的静态类,它使用in程序为每个设置都有一个公共静态参数:

public static string Settings_ScreenDefinitions_C;
public static string Settings_ScreenDefinitions_H;
// Etc currently there are about 20 of these.

在整个项目中是否有更好的存储和访问方式?

其次这些设置使用上述ProjectSettings类中每个设置的读/写调用存储在XML中:

xmlWriter.WriteElementString("ScreenDefinitionsFileC", ProjectSettings.Settings_ScreenDefinitions_C);
xmlWriter.WriteElementString("ScreenDefinitionsFileH", ProjectSettings.Settings_ScreenDefinitions_H);
// Again there is around 20 of these, one for each property and the same for reading them back out.

当我添加更多属性时,我可以帮助但是觉得必须有更优雅的方法来构建类(可能是字典?)以及在XML中使用它来保存和阅读的更好方法?

任何建议/指示都会很棒。

2 个答案:

答案 0 :(得分:1)

以下是我如何使用枚举和字典来完成它。我已经使用控制台输出来显示如何编写字典的键和值。

using System;
using System.Collections.Generic;

namespace ConsoleApplication
{
    class Program
    {
        private enum Settings
        {
            ScreenDefinitionsFileC,
            ScreenDefinitionsFileH
        };

        static void Main(string[] args)
        {
            var settings= new Dictionary<Settings, string>()
            {
                {Settings.ScreenDefinitionsFileC, "Setting 1"},
                {Settings.ScreenDefinitionsFileH, "Setting 2"}
            };


            foreach (var setting in settings)
            {
                Console.WriteLine("{0} {1}", setting.Key, setting.Value);
            }

            Console.ReadKey(true);
        }
    }
}

这样,您可以在写入XML时枚举您的设置,但也可以在程序的生命周期内查找特定设置。

答案 1 :(得分:0)

enter image description here

我不知道配置的完整列表,但我希望大多数配置可以通过在configurationManger中添加不同的配置来控制,即如果你添加&#34; MyConfiguration&#34;您可以在之后打开项目设置(特别是预构建和后期构建事件),其中的配置仅适用于&#34; myConfiguration&#34;因此,只能通过选择不同的配置来切换不同的配置。