代码之家  ›  专栏  ›  技术社区  ›  Brandon Spendlove

C#-创建配置文件以保存应用程序中使用的数据

  •  0
  • Brandon Spendlove  · 技术社区  · 8 年前

    到目前为止,我的项目是一个非常有趣的旅程,但我希望保存它将连接的服务器设置的配置(使用MySQLNet/Connector)。

    当应用程序加载后,默认情况下它连接到名为“sqlserver05”的服务器,但我希望用户/管理员能够在菜单中配置服务器设置。因此,我导航到菜单,您可以单击“配置”,在那里弹出另一个表单,询问服务器详细信息。

    我可以通过一个全局字符串来实现这一点,但每次应用程序运行时我都必须更改设置。我不能创建一个XML文件来读取刚刚更改的配置设置吗?

    对不起,如果我不清楚。非常感谢,

    布兰登

    3 回复  |  直到 8 年前
        1
  •  0
  •   Patrick Hofman    8 年前

    是的,你可以。一个简单的方法是使用应用程序设置。这是(用户和程序)设置的开箱即用的实现,它被序列化为XML。

    请看看古老的,但仍然适用 Using Settings in C# .

    有效地执行您必须执行的操作:

    • 将设置文件添加到项目中。去吧 解决方案管理器 ,右键单击项目并选择 属性 。然后选择 设置 。按照那里的步骤操作。
    • 创建设置。(在下面的代码中,它具有名称 PropertyName )
    • 获取并设置代码中的设置。

      string value = Properties.Settings.PropertyName; // get
      Properties.Settings.Default.PropertyName = value; // set
      
    • 更改任何内容后保存设置:

      Properties.Settings.Default.Save()
      
        2
  •  0
  •   Ehsan    8 年前

    我认为在您的情况下,最好使用C#附带的Settings类,看看这些链接。
    1 , 2

        3
  •  0
  •   kall2sollies    8 年前

    首先,创建一个简单的POCO对象来处理您想要设置的值,然后通过序列化程序读取/写入这个对象。

    您可以使用Javascript序列化程序来生成JSON文件(这比XML更“时髦”,但如果您更喜欢XML,则机制保持不变):

    class DatabaseSettings
    {
        // Settings file path
        private const string DEFAULT_FILENAME = "settings.json";
        // Server name or IP
        public string Server { get; set; } = "127.0.0.1";
        // Port
        public int Port { get; set; } = 3306;
        // Login
        public string Login { get; set; } = "root";
        // Password
        public string Password { get; set; }
    
        public void Save(string fileName = DEFAULT_FILENAME)
        {
            File.WriteAllText(
                fileName,
                (new JavaScriptSerializer()).Serialize(this));
        }
    
        public static DatabaseSettings Load(string fileName = DEFAULT_FILENAME)
        {
            var settings = new DatabaseSettings();
            if (File.Exists(fileName))
                settings = (new JavaScriptSerializer()).Deserialize<DatabaseSettings>(File.ReadAllText(fileName));
            return settings;
        }
    }
    

    用法如下:

    // Read
    var settings = DatabaseSettings.Load(/* your path */);
    // update
    settings.Server = "10.10.10.2";
    // save
    settings.Save(/* your path */);