我是C#开发的新手,
在我的项目中,我尝试Dictionary通过Settings使用以下代码将其序列化为存储来保存实例:
private static Dictionary<string, Dictionary<int, string>> GetKeys()
{
Dictionary<string, Dictionary<int, string>> keys = null;
try {
JavaScriptSerializer ser = new JavaScriptSerializer();
keys = ser.Deserialize<Dictionary<string, Dictionary<int, string>>>(Settings.Default.keys);
}
catch (Exception e)
{
Debug.Print(e.Message);
}
return keys;
}
private static void SetKeys(Dictionary<string, Dictionary<int, string>> keys)
{
try
{
JavaScriptSerializer ser = new JavaScriptSerializer();
Settings.Default.keys = ser.Serialize(keys);
}
catch (Exception e)
{
Debug.Print(e.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试调用SetKeys方法时,会出现问题.A ThreadAbortException抛出:
mscorlib.dll中发生了'System.Threading.ThreadAbortException'类型的第一次机会异常需要一个线程暂时运行.使用"监视"窗口执行评估.
您是否知道如何解决我的错误?
谢谢
最好使用Json.NET,但如果你想使用JavaScriptSerializer:
尝试:
var json = new JavaScriptSerializer().Serialize(keys.ToDictionary(item => item.Key.ToString(), item => item.Value.ToString()));
Run Code Online (Sandbox Code Playgroud)
或者:
string jsonString = serializer.Serialize((object)keys);
Run Code Online (Sandbox Code Playgroud)