如何将枚举保存到ApplicationData.Current.LocalSettings中

Jer*_*xon 4 c# windows-8 windows-runtime

事实证明,当您尝试存储枚举值时,WinRT保存设置的能力会引发异常.MSDN在"使用Windows运行时访问应用程序数据"页面上说,仅支持"运行时数据类型".

那么,你如何保存枚举?

Jer*_*xon 5

这是一个非常奇怪的行为.但容易解决.

首先,您需要某种类型的解析例程,如下所示:

T ParseEnum<T>(object value)
{
    if (value == null)
        return default(T);
    return (T)Enum.Parse(typeof(T), value.ToString());
}
Run Code Online (Sandbox Code Playgroud)

注意:ENUM的默认值始终是其0值成员.

然后你就可以像这样与它互动:

var _Settings = ApplicationData.Current.LocalSettings.Values;

// write
_Settings["Color"] = MyColors.Red.ToString()

// read
return ParseEnum<MyColors>(_Settings["Color"]);
Run Code Online (Sandbox Code Playgroud)

基本上,我们只是将它转换为字符串.