我NetDataContractSerializer
用于序列化/反序列化。我已经序列化了包含 Employee 对象的字典
现在我已经更改了 Employee 对象并包含了布尔字段 IsManager 因此,在对 xml 进行反序列化之后,我希望将 IsManger 的 Employee 对象作为 false 值。
但是我在反序列化 xml 时遇到了错误。
第 1 行位置 1676 中的错误。不应出现命名空间“ http://schemas.datacontract.org/2004/07/ ..”中的“元素”“ x003C ....” 。期待元素“ x003C ....”。
我已经尝试过[DataMember(IsRequired = false)]
IsManager[XmlElement(IsNullable=true)]
字段的属性,但它没有解决问题。
员工类
public Class Employee
{
public string FirstName{get;set;}
public string LastName{get;set;}
public bool IsManager{get;set;}
}
Employee 类在字典中被序列化以从字典(xml)中读取它我正在使用下面的代码
internal static IDictionary<TKey, TValue> DeserializeData<TKey, TValue>(string xml) where TValue : class
{
if (xml == null || xml.Equals(string.Empty))
{
return null;
}
IDictionary<TKey, TValue> dictionary = null;
var deserializer = new NetDataContractSerializer
{
AssemblyFormat = FormatterAssemblyStyle.Simple
};
var sr = new StringReader(xml);
using (XmlReader reader = XmlReader.Create(sr))
{
try
{
dictionary = deserializer.ReadObject(reader) as IDictionary<TKey, TValue>;
}
catch (Exception e)
{
Trace.WriteLine(
string.Format(
CultureInfo.InvariantCulture, "Exception during de-serialization of data: {0}", e.Message));
}
}
return dictionary;
}