XML ファイルにシリアル化するクラスのコレクションがあります。次のようになります。
public class Foo
{
public List<Bar> BarList { get; set; }
}
バーは、次のように、プロパティのコレクションの単なるラッパーです。
public class Bar
{
public string Property1 { get; set; }
public string Property2 { get; set; }
}
これをマークアップして、XML ファイルに出力するようにします。これは、永続化の両方に使用され、XSLT を介して設定を人間が判読できる形式にレンダリングするためにも使用されます。
次のような素敵な XML 表現を取得したい:
<?xml version="1.0" encoding="utf-8"?>
<Foo>
<BarList>
<Bar>
<Property1>Value</Property1>
<Property2>Value</Property2>
</Bar>
<Bar>
<Property1>Value</Property1>
<Property2>Value</Property2>
</Bar>
</Barlist>
</Foo>
Barlist 内のすべての Bar は、すべてのプロパティとともに書き出されます。クラス定義を機能させるには、何らかのマークアップが必要になると確信していますが、適切な組み合わせが見つからないようです。
Foo を属性でマークしました
[XmlRoot("Foo")]
とlist<Bar>
属性を持つ
[XmlArray("BarList"), XmlArrayItem(typeof(Bar), ElementName="Bar")]
私が何をしたいのかをシリアライザーに伝えようとしています。ただし、これは機能していないようで、次のような空のタグが表示されます。
<?xml version="1.0" encoding="utf-8"?>
<Foo>
<Barlist />
</Foo>
自動プロパティを使用しているという事実が何らかの効果をもたらすかどうか、またはジェネリックの使用に特別な処理が必要かどうかはわかりません。これは、文字列のリストのような単純な型で動作するようになりましたが、これまでのところ、クラスのリストはわかりません。