在我目前的項目中,我有很多對象需要堅持到XML並在運行時膨脹。我一直在通過.NET的DataContracts進行管理。我現在正在做的是創建一個單獨的類,它代表我正在序列化的對象,並將這些對象從光盤讀取/寫入,以避免在單個類中承擔過多的責任。這裏有一個例子:誰應該負責膨脹數據對象?
public class Range
{
private float _min;
private float _max;
public float Min { get { return this._min; } }
public float Max { get { return this._max; } }
// Constructrs & Methods...
public SerializedRange GetAsSerializable();
}
的Range
類有免費類:
[DataContract]
public class SerializedRange
{
[DataMember]
public float Min;
[DataMember]
public float Max;
// Constructor...
}
那麼我的問題是,誰應該負責實際拍攝對象的序列化版本,它膨脹到實際對象?我看到三個選項,但我不知道它(如果其中任何一個)將是最好的:
- 給這個對象吐出充氣實例的實例方法的序列化版本,利用現有的構造函數/姐妹班的工廠。
- 給妹妹類一個工廠,它需要一個序列化版本的實例來構建它自己。
- 不要有任何的類或它的序列化對口做任何東西 - 有在序列化對象讀取手動使用,他們會定期有什麼構造函數/工廠創建規則對象的代碼。
我認識到,在某些情況下,你不得不做的一種方式或其他,因爲這個有點人爲的例子以外的約束。既然還有更多的方法可以做到,我真正需要的是一個通用的經驗法則,可以產生整潔,可讀和可擴展的代碼。
謝謝,你肯定給了我一些想法。雖然我不經常使用它們,但我確信C#支持內部類。 – Wells