C#XML序列化,不包括父类字段

时间:2015-01-06 16:50:41

标签: c# xml wpf serialization

我有一个这样的课程:

public abstract class Node : Button
    {
        [XmlIgnoreAttribute()]
        private bool isMovable;

        public abstract ObjectType Type
        {
            get;
        }
        public double X { get; set; }
        public double Y { get; set; }
        public string Nodename { get; set; }
    }

序列化过程:

ObjectXMLSerializer<List<Node>>.Save(main.current_data.Nodes, filename);

当我尝试序列化它时会发生这种伎俩:我不希望它的父级(Button)字段被序列化,因为这给了我序列化错误。所以稍后,我可以反序列化这个xml,以便在我读取它们的字段时创建一个节点数组。 我可以以某种方式忽略父类的序列化吗? 感谢。

1 个答案:

答案 0 :(得分:0)

我会改为收容。并序列化包含的NodeInfo。节点信息将是与wpf按钮的特定差异,即您要序列化的附加信息。

public class ButtonNode : System.Windows.Controls.Button
{
    private System.Windows.Controls.Button _button;
    public ButtonNode(System.Windows.Controls.Button btn) : base() { this._button = btn; }

    public NodeInfo NodeInfo { get; set; }
}


public interface INodeInfo { ObjectType Type { get; } }

[XmlInclude(typeof(ConcreteNodeInfo1))]
public abstract class NodeInfo : INodeInfo
{
    public NodeInfo() { }

    [XmlIgnore] private bool isMovable;
    public abstract ObjectType Type { get; }
    public double X { get; set; }
    public double Y { get; set; }
    public string NodeName { get; set; }
}

public class ConcreteNodeInfo1 : NodeInfo 
{
    public ConcreteNodeInfo1() : base () { }
    public override ObjectType Type { get { return ObjectType.ObjectType1; }
}

作为旁注,this post解决了为什么我不应该使用泛型XmlSerializer&#39;。