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

本文关键字:NonSerialized 基类 属性 | 更新日期: 2023-09-27 17:58:28

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

如何做到这一点?

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

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

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

例如,

public class BaseClass
{
    [Serialized]
    public string MyProperty { get; set; }
}
public class ChildClass : BaseClass
{
    public bool ShouldSerializeMyProperty { get { return false; } }
}