私はインターフェースを使ってリストをシリアライズして逆シリアル化しようとしましたが、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
これをアーカイブするにはどうすればよいですか?
私は既にdocumentationで何かを見つけようとしましたが、例だけがあり、interfaces/listのものはありません。
でもシリアライザはこれを '' .yml''に追加しません。デシリアライザのメソッドに似たものがありますか? – jmattheis
シリアライザで 'SerializationOptions.Roundtrip'を指定すると、タグが追加されます。 –
これをあなたの答えで編集できますか? – jmattheis