不包括要在派生类中序列化的数据成员
本文关键字:序列化 数据成员 派生 不包括 | 更新日期: 2023-09-27 18:13:39
我有以下类。我不想让派生类序列化"Name",但是,下面的代码似乎不起作用。如果我声明一个派生类的实例,"Name"属性仍然被序列化。
[DataContract]
public class Base
{
[DataMember]
public virtual string Name
{get; set; }
}
[DataContract]
public class Derived: Base
{
[IgnoreDataMember]
public override string Name
{get; set; }
}
如果在基类中声明属性virtual会怎样?然后在派生类
尝试使用ScriptIgnore
(json)或XmlIgnore
(xml)属性,这取决于您要序列化的内容。这将防止该成员被序列化
如果你想尝试使用XmlSerializer这里是代码
public class Base
{
[XmlIgnore]
public virtual string Name { get; set; }
}
public class Derived : Base
{
[XmlIgnore] //Remove this to include
public override string Name { get; set; }
}
MemoryStream memStream = new MemoryStream();
XmlSerializer xmlSer = new XmlSerializer(typeof(Derived));
xmlSer.Serialize(memStream, new Derived() { Name = "aaaa" });
MessageBox.Show(Encoding.UTF8.GetString(memStream.ToArray()));