2

次のようなクラスがあります。

public class Item
{
    public Guid Id { get; set; }
    public Guid Parent { get; set; }
    public string Name { get; set; }
}

シリアル化すると:

        var parentId = Guid.NewGuid();
        var items = new List<Item>
        {
            new Item {Id = parentId, Parent = Guid.Empty, Name = "Parent"},
            new Item {Id = Guid.NewGuid(), Parent = parentId, Name = "Child"}
        };

        var builder = new StringBuilder();

        var serializer = new YamlDotNet.Serialization.Serializer();

        using (var writer = new StringWriter(builder))
        {
            serializer.Serialize(writer, items);
        }

        Console.WriteLine(builder.ToString());

出力は次のとおりです。

- Id: 1c49bc54-d0e3-494e-8fd7-b9ffd8c1892a
  Name: Parent
- Id: dd54864a-61f7-4d73-b89d-9bd4e4c2c8f4
  Parent: *o0
  Name: Child

*o0親である他のクラスのIDである作成された参照があります。しかし、YamlDotnet はこの参照を定義していないため、逆シリアル化すると、アンカーが見つからないというエラーが表示されます。

これはフレームワークのバグですか、それとも何かできることはありますか?

4

0 に答える 0