防止属性被序列化

我试过这样的事情:

[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并将方法添加到派生类。

艾伦。