Kob*_*kie 3 .net c# xml serialization
我有一个抽象的基类,我已经添加了一些虚拟属性.我想要的是,在我的派生类中,指定在序列化(和反序列化过程)期间忽略特定的基类属性.如下所示,-class中的Value-property BaseClass声明为virtual属性,而在DerivedClass-class中,使用overrides-keyword,我选择覆盖基类的ppty,然后将-Attribute放在XmlIgnoreAttribute它上面.但是,当我测试代码时,我仍然会Value在生成的XML中找到包含在派生类实例中的ppty.定义ppty也会发生同样的事情,即使我使用new关键字将它隐藏在Derived类中,它也会被渲染,然后也将XMLIgnoreAttribute应用于它.请问以下代码有什么问题?
public abstract class BaseClass
{
    public virtual String Value { get; set; }
     public String Definition { get; set; }
    [XmlAttribute("SeparatorCharacter")]
    public virtual String SeparatorCharacter { get; set; }
}
public class DerivedClass:BaseClass
{
    [XmlIgnore()]
    public overrides String Value { get; set; }
    [XmlAttribute("FillerCharacter")]
    public String FillValue { get; set; }
     [XmlIgnore()]
    public new String Definition { get; set; }
}
序列化程序不会考虑覆盖属性的属性,无论是为其提供属性还是通过XmlAttributeOverrides.获取所需行为的唯一部分解决方法是将虚ShouldSerializeValue方法添加到基类并在派生类中重写它以禁止序列化Value.这不会阻止反序列化Value,但可以使覆盖设置器为空.
public abstract class BaseClass
{
    public virtual String Foo { get; set; }
    public virtual bool ShouldSerializeFoo () { return true ; }
}
public class DerivedClass:BaseClass
{
    public override String Foo { get; set; }
    public override bool ShouldSerializeFoo () { return false ; }
}
| 归档时间: | 
 | 
| 查看次数: | 2207 次 | 
| 最近记录: |