Как сериализовать пользовательский класс с YamlDotNet

Я пытаюсь сериализовать пользовательский класс с библиотекой YamlDotNet.
Есть мой класс:

public class Person
{
    string firstName;
    string lastName;

    public Person(string first, string last)
    {
        firstName = first;
        lastName = last;
    }
}

И вот как я попытался его сериализовать:

StreamWriter streamWriter = new StreamWriter("Test.txt");
Person person = new Person("toto", "titi");
Serializer serializer = new Serializer();
serializer.Serialize(streamWriter, person);

Но в моем выходном файле у меня есть только это: { }

Что я забыл сделать для сериализации моего класса?

заранее спасибо

1 ответ

Решение

Поведение YamlDotNet по умолчанию заключается в сериализации открытых свойств и игнорировании полей. Самое простое решение - заменить открытые поля автоматическими свойствами:

public class Person
{
    public string FirstName { get; private set; }
    public string LastName { get; private set; }

    public Person(string first, string last)
    {
        FirstName = first;
        LastName = last;
    }
}

Вы можете относительно легко изменить поведение YamlDotNet для сериализации приватных полей, но я не рекомендую этого делать.

Другие вопросы по тегам