0

尝试使用YAMLDOTNET的序列化程序,当我有对象时遇到一些问题,该对象不仅由字符串组成,而且内部还有一个特殊的对象。

序列化时,我只会得到一个 {} 字符串。例如,如果在序列化对象图示例中,我们定义了一个结构地址。然后我们在里面新建一个Address类的对象,最终在receipt中赋值,结果也会是yaml文件地址字段上的{}。

示例代码也可以在这里看到。这将创建一个如下所示的输出:

receipt: Oz-Ware Purchase Invoice
date: 2007-08-06T00:00:00.0000000
customer:
  given: Dorothy
  family: Gale
items:
- part_no: A4786
  descrip: Water Bucket (Filled)
  price: 1.47
  quantity: 4
- part_no: E1628
  descrip: High Heeled "Ruby" Slippers
  price: 100.27
  quantity: 1
bill_to: &o0 {}
ship_to: *o0

所以 bill_to 将显示为 {}

4

1 回答 1

1

YamlDotNet.Serialization.Serializer 不会将字段序列化到 YAML 输出中。它在示例中有效,因为它使用的是动态对象,而街道、城市和州是该对象的属性。

如果您将地址中的字段更改为属性,它们将被序列化,例如

public struct Address
{
    public string street { get; set; }
    public string city { get; set; }
    public string state { get; set; }
}

使用属性而不是公共字段也是最佳实践。

于 2015-01-29T01:30:40.597 回答