インターフェイスを使用してリストをシリアライズおよびデシリアライズしようとしましたが、問題は 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
では、どうすればこれをアーカイブできますか?
私はすでにドキュメントで何かを見つけようとしましたが、例だけがあり、インターフェース/リストには何もありません。