将属性从基类更改为[NonSerialized]

时间:2011-06-05 01:58:31

标签: c# serialization

所以我有一个基类,并且有一个设置为[Serializable]的属性。 在派生类中,我想使该属性[NonSerialized]。

如何做到这一点?

2 个答案:

答案 0 :(得分:2)

这将违反OOP。基类已经确定了这个属性是可序列化的这一事实。必须可以将派生类的任何实例替换为基类的实例。这意味着派生类的每个实例都必须具有可序列化的属性。

答案 1 :(得分:0)

您无法替换新属性,但您可以定义一个名为ShouldSerializePropertyName的属性(其中PropertyName是您的属性的名称),该属性始终返回false。这应该覆盖属性上属性的存在。

例如,

public class BaseClass
{
    [Serialized]
    public string MyProperty { get; set; }
}

public class ChildClass : BaseClass
{
    public bool ShouldSerializeMyProperty { get { return false; } }
}