【发布时间】:2016-05-03 10:52:46
【问题描述】:
如果这是一个重复的查询,请指出导致这种情况的确切原因,因为我找不到任何一个。
我正在尝试使用 xml 序列化程序将以下对象序列化为 xml,但遇到了一些异常。
[Serializable]
public class KAD
{
public KAD()
{
StaffMembers = new List<StaffMember>();
Jobs = new List<Job>();
Tasks = new List<Task>();
}
public List<StaffMember> StaffMembers { get; set; }
public List<Job> Jobs { get; set; }
public List<Task> Tasks { get; set; }
}
public class Job
{
public Job()
{
}
public int? JobId { get; set; }
public string JobTitle { get; set; }
}
public class Task
{
public Task()
{
}
public int? TaskId { get; set; }
public string TaskTitle { get; set; }
}
而我的 StaffMember 类是不同的命名空间,并且再次具有子属性但名称相同,即 Task 和 Job。
public class StaffMember
{
public StaffMember()
{
Jobs = new List<Job>();
}
public int StaffMemberID { get; set; }
public List<Job> Jobs { get; set; }
}
public class Task
{
public int? TaskId { get; set; }
public string TaskTitle { get; set; }
public bool? OverAllTaskCompetency { get; set; }
public DateTime? ExpireyOfNextCompetencyOrLicenceForTask { get; set; }
}
public class Job
{
public Job()
{
Tasks = new List<Task>();
}
public int? JobId { get; set; }
public string JobTitle { get; set; }
public decimal? Rate { get; set; }
public List<Task> Tasks { get; set; }
}
当我尝试初始化 serializer 时,它在这一行给了我一个异常:
XmlSerializer ser = new XmlSerializer(typeof (KAD));
System.Xml.dll 中出现“System.InvalidOperationException”类型的未处理异常
附加信息:反映类型“KAD”的错误。如果有人提出可能的解决方案,将不胜感激。还有一件事,我无法同时更改子范围和父范围的类名。
【问题讨论】:
-
检查内部异常,看看是什么错误导致序列化器无法反映KAD类型。
-
它说:{“反映属性‘工作’时出错。”}
-
那么内部异常肯定有内部异常,递归异常直到没有内部异常,这就是它的根本原因。
-
是的,内部异常中有一个内部异常。这有助于我理解实际问题。实际上,子类和父类中的 Job 和 Task 类是可用的,这导致了问题。因此找到了使用在父类上添加属性的解决方案,例如 [XmlRoot("KAD_Job", Namespace = "root")]
-
另外,如果之前的答案没有解决您的问题并且您发布了自己的解决方案,那么请接受您自己的回复。
标签: c# .net xml serialization xml-serialization