XML反序列化,生成对像时出现异常InvalidOperationException
异常信息如下:
System.InvalidOperationException
HResult=0x80131509
Message=There was an error reflecting type ‘MT.Entitys.Serialization.ETVideoRSS’.
Source=System.Private.Xml
StackTrace:
在 System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
在 System.Xml.Serialization.XmlReflectionImporter.ImportElement(TypeModel model, XmlRootAttribute root, String defaultNamespace, RecursionLimiter limiter)
在 System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace)
在 System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
在 System.Xml.Serialization.XmlSerializer..ctor(Type type)
在 MT.RuleManager.CollectSource.VideoSourceXMLParser.parseCollectedXML(String pXMLData) 在 E:\MidnightTheater\V2\MidnightTheaterV2\MT.RuleManager\CollectSource\VideoSourceXMLParser.cs 中: 第 22 行
同时还有一个内部异常信息:
NotSupportedException: Cannot serialize member MT.Entitys.Serialization.ETVideoRSSVideoDLDD.items of type System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], because it implements IDictionary.
异常原因:
是在类中新加了一个属性,但在XML文档中则没有这个属性,所以出现反序列化失败异常。
解决方法:
在没有对应XML属性的类字段上加上标记[XmlIgnore]
如:
/// <summary>
/// 此items需要从text属性中解析出来,不是从XML文档中解析得到
/// </summary>
[XmlIgnore]
public Dictionary<string, string> items { get; set; }