Skip to content

Instantly share code, notes, and snippets.

@neuecc
Last active January 31, 2016 07:42
Show Gist options
  • Select an option

  • Save neuecc/6e2fa7e6764c1dce7e0b to your computer and use it in GitHub Desktop.

Select an option

Save neuecc/6e2fa7e6764c1dce7e0b to your computer and use it in GitHub Desktop.
Serialize derived class
[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]] になるとか……。

@neuecc
Copy link
Copy Markdown
Author

neuecc commented Jan 31, 2016

そうですねー、初回は自動生成なので、そのように生成しちゃえばいいかなぁ。

部分的に変えられるのはいい、と思います!
が、言語超えた相互変換性は落ちそうなのでそこがアリかどうかですかしらん?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment