我有一个这样的课程:
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,以便在我读取它们的字段时创建一个节点数组。 我可以以某种方式忽略父类的序列化吗? 感谢。
答案 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;。