我使用的BinaryFormatter序列化類和條件的變量。例如:有條件的C#二進制序列
[Serializable]
public class Class1
{
private Class2 B;
...
}
[Serializable]
public class Class2{...}
我想遠程處理時間變量B僅被序列化,而不是當我序列化到文件存儲。 問題:
1)我知道,在XmlSerialization我們可以使用[XmlIgnore]和{}屬性名指定有條件地忽略屬性。這是[NonSerialized]的等價方法嗎?
2)對於具有[Serializable]屬性的類,如何在運行時忽略它?
非常感謝。對於我的情況,實現ISerializable太繁瑣,因爲太多的類和變量。我對protobuf感興趣。它是否也允許自定義序列化?因爲我在GetObjectData()期間轉換了一些值。 – felonny 2010-09-06 08:33:10
您不必在所有類中實現ISerializable,只能在需要自定義邏輯的類中實現。 Protobuf應該允許自定義序列化,但我不確定它會適合您的需求;如果你的數據體系結構是足夠規範的(例如,有關什麼時候應該序列化的規則以及很少的例外),那麼你可能會更好地重新思考數據體系結構或生成自定義的序列化代碼。 – 2010-09-06 12:55:44