0

YAMLDOTNETのシリアライザーを使用しようとしていますが、文字列だけで構成されておらず、内部に特別なオブジェクトを持っているオブジェクトがあると、いくつかの問題が発生します。

シリアル化すると、{} 文字列が取得されます。たとえば、オブジェクト グラフのシリアル化サンプルでは、​​構造体 Address を定義します。次に、クラス Address の新しいオブジェクトを内部に作成します。これは最終的に領収書に割り当てられます。結果は、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 出力にシリアライズしません。この例では、動的オブジェクトを使用しており、通り、都市、および州がそのオブジェクトのプロパティであるため、機能します。

Address のフィールドをプロパティに変更すると、シリアル化されます。

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

パブリック フィールドの代わりにプロパティを使用することもベスト プラクティスです。

于 2015-01-29T01:30:40.597 に答える