前提条件:XmlSerializerは、シリアライズした時のXMLのルート要素が「クラス名」になる。そのため、別のクラスに対してデシリアライズすることができない。サンプルでは、名前空間を分けることで新旧のクラスのクラス名を同一にしている。変数の追加:デシリアライズ成功。追加された変数は、new時のデフォルト値となった変数の削除:デシリアライズ成功。削除された変数は、無視された。Frameworkだけを使用するXmlSerializerでも、バージョンアップに耐える処理は実現可能だった。JSON.NETも、それと同様の動きになった。XmlSerializerは前提条件があるし、設定ファイルくらいの目的だとXMLはパワフルすぎる感があるので、気軽に使うならJSON.NETの方が良さそうだ。(OSSを採用可能な案件であれば)YamlDotNetは意外にも、YAML内に存在する値がクラスに定義されていないとエラーになってしまう。デシリアライザの設定などで回避できないかを調べたが、良い方法が見つからなかった。2020/2/14追記:見つかった。YAMLにはアンカーとエイリアスがあるためC#のクラスとはXMLやJSON以上に相性が良く、最有力候補だと思ったが・・・。バージョンアップがありうる設定ファイルに使用するには、注意が必要になるようだ。17:12XML,JSON,YAMLの主要シリアライザで、クラスメンバが増減してもデシリアライズできるか調べてみたTweet広告を非表示にするもっと読むコメントを書く2019-09-16C#で不要な戻り値やout引数を捨てるには_(アンダーバー)を使ったほうが良いC#で、関数の戻り値やout引数が不要なので捨てたいという場合がある。7.0からはもっと良い書き方が登場していた。_(アンダーバー)を書けばよい。これなら型指定もいらないし、書きやすいだけでなく実際にメモリ確保処理がスキップされるのでパフォーマンスにも良いようだ。async関数の完了を待たない事を明示するためにとりあえず変数で受ける場合にも、これは有効だと思う。最近のC#はこういう「知らなくても動くコードを書く上では困らないが、知っているとパフォーマンスが上がったりコードが読みやすくなって便利」という改善が多い。意識して調べないと腕が落ちてしまうので、普段から情報収集して色々試す必要がある。16:20C#で不要な戻り値やout引数を捨てるには_(アンダーバー)を使ったほうが良いTweet広告を非表示にするもっと読むコメントを書く2019-05-12JSON.NETのデシリアライズは、変数が増減していた場合も使えるこの記事の内容に加えてXML・YAMLも試してみた、より新しい記事はこちら。http://suusanex.hatenablog.jp/entry/2019/09/23/171255JSON.NETのシリアライズ・デシリアライズを採用しようとして、1つ気になる点があったので実験した。用途の都合で、バージョン1でシリアライズした文字列を、ファイル等を介してバージョン2で読み込む可能性がある。ここで、バージョン2で対象クラスの変数が増減することがありうる。その場合でもデシリアライズは可能なのか?「クラスが異なるので例外」となるようでは、採用が難しい。デシリアライズに成功し、次のようになってほしい。実験したところ、期待通りの動作になった。これなら、バージョンアップ可能性がある場合も使えそうだ。技術書もビジネス書も何でも揃っていたブックファースト(旧あおい書店)が、ダイエー横浜西口店と共に閉店してしまった・・・。難民となったので、代わりになる本屋を探してみた。結論ソフトウェア工学系なら紀伊国屋そごう横浜店が強い。言語・フレームワーク系なら有隣堂横浜駅西口ジョイナス店(エキニア地下)が強い。有隣堂の方は22時までだが、そごうは20時まで。ブックファーストの23時には及ばない。平日就業後に本を探す時は早めに帰宅を。棚4段8個くらいあり、特にPM・モデリング等の設計などのソフトウェア工学系も充実。バラバラではなく、ちゃんとカテゴリごとに良著を揃えてる印象がある。ジョイナス店(エキニア地下)良い。棚4段8個くらいあり、雑多な印象は受けるが冊数は多い。どちらかというと言語やフレームワーク系が多く、ソフトウェア工学系は少なめ。少なめと言ってもこの後出てくる店舗より多い。有隣堂ルミネ横浜店ダメ。6段2個くらいあり、ソフトウェア工学系が充実。Unityの文字を見かけないなど、スペースの限界を感じる。IT以外の技術書が手厚く見えるので、そちら目当てなら良さそう。紀伊国屋みなとみらい(コレットマーレ)店そこそこ。4段2個くらいあり、言語・ソフトウェア工学系に加えてUnityなどのゲーム開発系もあり、バランスは良い。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。