如何在C#.Net应用程序中正确存储状态

Sid*_*Bob 2 .net c#

我有一个对象列表,其中每个对象都有一个名为"enabled"的布尔属性.我想记住应用程序会话中这些对象的状态.要做到这一点,我至少有两个选项,使用注册表或使用更多的.net方法,app.config文件.我宁愿做后者.

但是,虽然静态/编译时键/值赋值很简单,但动态地将新键分配给app.config文件似乎并不重要.你有一个如何做到这一点的例子吗?

我的问题是,如果你想避免注册表,在.net中存储对象列表属性的最佳方法是什么?

Dav*_*rab 6

如果可能,我倾向于将您的状态保存到数据库或其他文件结构.通常不会在运行时更改app.config.我倾向于将对象序列化为文件,并使用它来保持状态.

这将根据具体情况动态更改app.config或web.config.

public void ChangeAppSettings(string applicationSettingsName, string newValue)
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

    KeyValueConfigurationElement element = config.AppSettings.Settings[applicationSettingsName];

    if (element != null)
    {
        element.Value = newValue;
    }
    else
    {
        config.AppSettings.Settings.Add(applicationSettingsName, newValue);
    }

    config.Save(ConfigurationSaveMode.Modified, true);

    ConfigurationManager.RefreshSection("appSettings");
}
Run Code Online (Sandbox Code Playgroud)