我想知道是否可以从XmlElement字段继承,例如
public class A{
[XmlElement(ElementName = "Something", Form = XmlSchemaForm.Unqualified)]
public string Something{ get; set; }
}
public class B: A
{
}在使用B类对象时,我是否可以通过尝试解析来创建一个XmlElement字段来操作它呢?
谢谢
//编辑
下面是我将在另一个类中使用这个xml元素字段所做的事情。
public class B: A, INotifyPropertyChanged
{
public Int32? TimerValueFromApi
{
get
{
int timerValueFromApi;
return int.TryParse(base.Something, out timerValueFromApi) ? (int?) timerValueFromApi : null;
}
set
{
base.Something = value.HasValue ? value.Value.ToString(CultureInfo.InvariantCulture) : "0";
NotifyPropertyChanged("TimerValueFromApi");
}
}
}发布于 2015-02-03 19:29:48
是的,它的作用是:
var xml = "<B><Something>5</Something></B>";
var b = (B) new XmlSerializer(typeof(B)).Deserialize(new StringReader(xml));
Console.WriteLine(b.TimerValueFromApi); // outputs "5"发布于 2015-02-03 19:33:26
您可以使用如下的一些AfterDeserialization操作:
public interface IDeserializable
{
void OnDeserialize();
}
public class A
{
[XmlElement(ElementName = "Something", Form = XmlSchemaForm.Unqualified)]
public string Something { get; set; }
}
public class B : A, IDeserializable
{
[System.Xml.Serialization.XmlIgnore]
public Int32 SomethingInt32
{
get;
set;
}
public void OnDeserialize()
{
SomethingInt32 = Int32.Parse(Something);
}
}
public class C
{
public void Deserialize()
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(B));
var b = ser.Deserialize(streamOrStringData) as B;
b.OnDeserialize();
}
}https://stackoverflow.com/questions/28306889
复制相似问题