Как сериализовать ключ и только одно значение объекта общего словаря? - PullRequest
1 голос
/ 19 октября 2010

Я с нетерпением жду сериализации словаря, чтобы сохранить часть его информации, точнее, его ключ и его значение, в изолированном хранилище Silverlight.Я прочитал много вопросов, говорящих об одной и той же теме на этих досках, но никто не объяснял, что я пытался сделать, или, по крайней мере, не так, как я мог понять.Я также не знаю, с помощью чего я мог бы его сериализовать: XmlSerializer, JSON и т. Д ... Я пытаюсь выполнить эту сериализацию, чтобы "сохранить" некоторые пользовательские настройки, я не собираюсь отправлять их вВеб-сервис или что-то, только его использование будет внутри приложения.

Вот структура моего словаря:

static Dictionary<string, User> Mydictionary

А вот класс 'User':

public class User
{
    public User()
    {

    }

    public string name;
    public string age;
    public string groups;
}

Я хотел бы сохранить ключ и значение 'groups' моего объекта и сериализовать только эти две информации.Я спрашивал себя, возможно ли это вообще?

Спасибо, Еписмен.

1 Ответ

2 голосов
/ 19 октября 2010

Сериализация / десериализация XML с помощью Linq очень проста, я настоятельно рекомендую вам взглянуть на него, если вы еще этого не знаете.

Сериализация будет выглядеть так:

// 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
        });
}

Вы можете найти хорошую документацию здесь и некоторые примеры здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...