防止属性被序列化
我试过这样的事情:
[NonSerialized] private string _DecodeText; public string DecodeText { get { return _DecodeText; } set { _DecodeText = value; } }
但它不起作用。 “DecodeText”仍在序列化文件中。 如何防止属性序列化?
我怀疑你正在使用XmlSerializer
? 如果是这样,请改用[XmlIgnore]
属性。
这应该应用于属性而不是支持字段,因为XmlSerializer
序列化公共字段和属性(而BinaryFormatter使用refelction来获取私有字段 – 因此使用BinaryFormatter时使用NonSerialized标记私有字段)。
我能够使用以下内容而没有序列化属性(.NET 4.0):
private string _DecodeText; [System.Xml.Serialization.XmlIgnore] public string DecodeText { get { return _DecodeText; } set { _DecodeText = value; } }
更新的答案
[NonSerialized] atttibute是变量而不是属性,但它不能在属性上。 所以它没有帮助。
阻止属性序列化的一种方法是添加方法
public bool ShouldSerializeDecodeText() { return false; }
这个(至少对于XmlSerializer)将阻止属性被序列化。
如果您不想仅为序列化添加许多方法,则可以尝试从它inheritance并将方法添加到派生类。
艾伦。