我正在尝试使用接口序列化和反序列化列表,问题是 yamldotnet 无法反序列化它。
我用一个例子向你展示了它:
interface IAnimal
{
string Name { get; }
}
class Cat : IAnimal
{
public string Name { get; set; }
public string CustomThing { get; set; } = "1a";
}
class Dog : IAnimal
{
public string Name { get; set; }
public bool IsSomething { get; set; } = true;
}
当我现在尝试序列化这个时:
var serializer = new Serializer();
List<IAnimal> animals = new List<IAnimal>()
{
new Cat() { Name = "Oscar" },
new Dog() { Name = "WuffWuff" }
};
var writer = File.CreateText("test.yml");
serializer.Serialize(writer, animals);
writer.Close();
结果是
- Name: Oscar
CustomThing: 1a
- Name: WuffWuff
IsSomething: true
我知道,因为这一点 yamldotnet 无法知道是哪些类型,并且需要在内部定义类类型yml
那么我该如何存档呢?
我已经尝试在文档中找到一些东西,但只有示例,没有接口/列表。