我期待序列化一个字典,以便将其中的一些信息,更准确地说是Key和其中一个值,保存到Silverlight Isolated存储中。我已经阅读了很多关于这些董事会讨论同一主题的问题,但没有人解释我试图做什么,或者至少不是我能理解的方式。我也不知道我可以序列化它:XmlSerializer,JSON等...我正在尝试执行此序列化以“保存”一些用户设置,我不打算将它们发送到Web服务或任何其他东西,它只会在应用程序内部使用。
这是我的词典的结构:
static Dictionary<string, User> Mydictionary
这是'用户'类:
public class User
{
public User()
{
}
public string name;
public string age;
public string groups;
}
我想保存对象的Key和'groups'值,并仅序列化这两个信息。我问自己是否有可能?
谢谢你,Ephismen。
答案 0 :(得分:2)
使用 Linq 对XML进行序列化/反序列化非常简单,如果您还不知道,我强烈建议您查看它。
序列化将如下所示:
// add reference to System.Xml.Linq
var xml = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("users",
from pair in dic
select new XElement("user",
new XAttribute("userId", pair.Key),
new XAttribute("Groups", pair.Value.groups))));
// xml.Save(...) to save in the IsolatedStorage
反序列化:
XDocument loaded = XDocument.Load(...your stream...);
var results = from c in loaded.Descendants("users")
select new {
userIdAttribute = (string)c.Attribute("userId"),
groupsAttribute = (string)c.Element("Groups")
};
foreach (var user in results)
{
dic.Add(user.userIdAttribute,
new User()
{
name = user.userIdAttribute,
groups = user.groupsAttribute
});
}