[DataContract]
public class Hoge
{
[DataMember(Order = 0)]
public int MyProperty1 { get; set; }
}
[DataContract]
public class HogeHoge : Hoge
{
[DataMember(Order = 1)]
public int MyProperty2 { get; set; }
[DataMember(Order = 2)]
public int MyProperty3 { get; set; }
}HogeHogeのシリアライズ時の表現は[Prop1, Prop2, Prop3]。
しかしこれだと、Hogeにたいしてプロパティを追加したりするのが辛い(というかもはや実質不可能……)
できれば[DataMember(Order = 0)]MyProperty2, [DataMember(Order = 1)]MyProperty3 で書きたい。そこでHogeHogeをシリアライズした時に、まっ平らになるのではなく、継承関係も維持したままシリアライズするとかどうでしょう?
[Prop1, [Prop2, Prop3]] になるとか……。
おうふ、ウルトラ浅かったですね、すぐ破綻しそうです。
Mapがいい、ですね……!
その場合、Nameに短い値をつければいい、わけですが、
実質Orderと一緒なら、むしろもはやNameをOrderと同じ値扱いにするオプションが欲しい感じもします。
{"0":_, {"1":_, "2":_}}的な。