我有两个类,如下所示:
[Serializable]
[XmlInclude(typeof(SomeDerived))]
public class SomeBase
{
public string SomeProperty { get; set; }
}
public class SomeDerived : SomeBase
{
[XmlIgnore]
public new string SomeProperty { get; set; }
}
当我序列化和实例时,SomeDerived
我不希望看到SomeProperty
. 不过,我愿意。我尝试过其他方法,例如SomeProperty
声明为virtual
inSomeBase
并将其覆盖在SomeDerived
. 我仍然在SomeDerived
.
谁能解释一下是怎么回事XmlIgnoreAttribute
?
为了完整起见,我的反序列化代码如下
class Program
{
static void Main(string[] args)
{
SomeDerived someDerived = new SomeDerived { SomeProperty = "foo" };
XmlSerializer ser = new XmlSerializer(typeof(SomeBase));
MemoryStream memStream = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(memStream, Encoding.Default);
ser.Serialize(memStream, someDerived);
xmlWriter.Close();
memStream.Close();
string xml = Encoding.Default.GetString(memStream.GetBuffer());
Console.WriteLine(xml);
Console.ReadLine();
}
}
编辑
如果我将序列化程序声明更改为new XmlSerializer(typeof(SomeDerived))
.