DotNet / 编程技术 · 2022年10月21日

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; }

最新电影,电视剧,尽在午夜剧场

电影电视剧午夜不寂寞