在应用程序设置中保存字典并在启动时加载它

Ken*_*ama 2 c# wpf settings dictionary converter

Dictionary<string, double>当我重新启动应用程序时,我已经保存并恢复它.据我所知,你不能在c#中存储字典,所以试图解决方法.

目前我已经在设置中调用了字符串变量DB,并试图使用这样的东西:

var settings = dict.ToArray();

var prop = Properties.Settings.Default.DB;
Run Code Online (Sandbox Code Playgroud)

做一些像 prop = settings;

到目前为止,我已经做到了这一点,虽然它现在正在工作..

private void SaveSettings()
{
    var settings = spamPercentage.ToArray();

    var prop = Properties.Settings.Default.DB;

    string res = String.Join(",", settings);

    prop = res;
}

private void LoadSettings()
{
    var prop = Properties.Settings.Default.DB;

    var dictionary = prop.ToDictionary(item => item.Key,
                               item => item.Value);
}
Run Code Online (Sandbox Code Playgroud)

编辑字典中的值如下所示:

{[john, 0,53]}
{[ivone, 0,44]}
etc.
Run Code Online (Sandbox Code Playgroud)

@edit使用Julien JSON的想法,我做了:

 string prop = Properties.Settings.Default.DB;
    private void SaveSettings()
    {

        prop = JsonConvert.SerializeObject(dict);
Properties.Settings.Default.Save();
    }

    private void LoadSettings()
    {
        dict= JsonConvert.DeserializeObject<Dictionary<string, double>>(prop);
    }
Run Code Online (Sandbox Code Playgroud)

当我点击程序并使用我的SaveSettings方法时,我可以看到它有值.然后我重新启动程序,并尝试loadsettings,他们是null.

Jul*_*ien 8

我刚才有类似的问题.我最终使用JSON序列化将字典序列化为字符串,将其存储在应用程序设置中,并在需要时将其反序列化为字典.

string strDictionaryAsString = JsonConvert.SerializeObject(dtnDictionary);

var dtnDictionary = JsonConvert.DeserializeObject<Dictionary<string, double>>(strDictionaryAsString );
Run Code Online (Sandbox Code Playgroud)