如何使用 yamldotnet 序列化程序处理对象图中的循环

How to handle cycles in object graph with yamldotnet serializers

我正在尝试使用 Yamldotnet 库来序列化具有循环引用的模型。我应该使用哪些序列化程序设置或数据 class 属性来实现此目的?我希望能够对模型进行序列化和反序列化,同时保留引用。

示例模型:

public class Book
{
    public string Title { get; set; }
    public List<Author> Authors { get; set; }
}

public class Author
{
    public string Name { get; set; }
    public List<Book> Books { get; set; }
}

目前我可以将模型正确序列化为 yaml:

&o0 !Author
Name: name1
Books:
- !Book
  Title: title1
  Authors:
  - *o0

,但反序列化抛出异常:

YamlDotNet.Core.AnchorNotFoundException: (Line: 7, Col: 5, Idx: 70) - (Line: 7, Col: 8, Idx: 73): Alias $o0 cannot precede anchor declaration

My code sample on .NET fiddle

看来这是 YamlDotNet 库中的一个错误,应该会在 9.1.4 之后的下一个版本中修复。