假设我想反序列化它(我已经删除了命名空间以使事情变得更简单):
<TextField>
<Caption>Location</Caption>
<Name>Location</Name>
</TextField>
TextField 继承自 FormField,所以在我的 FormField 类定义中看起来像这样:
[KnownType(typeof(TextField))]
[DataContract(Name = "FormField"]
public abstract class FormField
{
[DataMember]
public string Name { get; set; }
}
TextField 类如下所示:
[DataContract(Name = "TextField")]
public class TextField : FormField
{
[DataMember]
public string Caption { get; set; }
}
我尝试使用这个反序列化:
internal static FormField Deserialize(string xml)
{
var serializer = new DataContractSerializer(typeof(FormField)});
using (var backing = new StringReader(xml))
{
using (var reader = new XmlTextReader(backing))
{
return serializer.ReadObject(reader) as FormField;
}
}
}
我得到一个 SerializationException:“期望元素 'FormField'...”