C#カスタムタイプを持つオブジェクトのシリアル化プラクティス
-
12-12-2019 - |
質問
カスタムタイプをいくつか作成しました。
public class Temperature
{
protected double _celcius;
public Temperature(){}
public Temperature(double celcius)
{
_celcius = celcius;
}
public double Celcius
{
//sets & returns temperature in Celcius
}
public double Fahrenheit
{
//sets & returns temperature in Fahrenheit
}
}
.
とMass
などの類似のもの。
私はカスタムオブジェクト、たとえばPlanet
を持っています。これらのカスタムタイプをプロパティとして使用します。
[Serializable]
public class Planet
{
public int PositionFromSun;
public Mass Mass;
public Temperature Temperature;
}
.
Planet
とMass
が将来的にわずかに変わる可能性があることを考慮すると、Temperature
をシリアル化するためのベストプラクティスは何ですか(例えば、Kelvin
へのTemperature
の追加)。Mass
とTemperature
がIQuantity
のようなもののカスタムインターフェイスから継承する必要があります。
解決
a @ adriano's コメント。これが私が必要なものです。
はい、あなたはあなたが必要とするのと同じくらい多くのパブリックプロパティを追加することができます。比較のためにここでこの投稿を見てみましょう。XMLSerializerとBinaryFormatter
の違い
他のヒント
バイナリシリアル化は、追加されているプロパティが追加され、タイプに削除されたことがかなり簡単です。バージョントレラントシリアライザ(例:XMLベースのシリアライザ)を使用すると、クラスのバージョン間で確実にシリアル化/デシリアイアイアリングすることができます。
Protobuf.net を使用することを検討してください。成熟した、非常に迅速でバージョンの耐性。
所属していません StackOverflow