如何使用 YamlDotNet 序列化自定义 class
How to serialize a custom class with YamlDotNet
我正在尝试使用 YamlDotNet 库序列化自定义 class。
这是我的 class:
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);
但是在我的输出文件中,我只有这个:{ }
我忘记做什么来序列化我的 class?
YamlDotNet 的默认行为是序列化 public 属性并忽略字段。最简单的解决方法是用自动属性替换 public 字段:
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 的行为以相对轻松地序列化私有字段,但我不建议这样做。
我正在尝试使用 YamlDotNet 库序列化自定义 class。
这是我的 class:
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);
但是在我的输出文件中,我只有这个:{ }
我忘记做什么来序列化我的 class?
YamlDotNet 的默认行为是序列化 public 属性并忽略字段。最简单的解决方法是用自动属性替换 public 字段:
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 的行为以相对轻松地序列化私有字段,但我不建议这样做。