我想知道我是否遗漏了任何内容...我的理解是,我应该能够在反序列化后获取ID属性(但不能设置它)。就目前而言,ID属性根本没有带来:
namespace CableSolve.Orders.Core.Dto
{
[Serializable]
[XmlRoot("Task"), SoapType("Task")]
public class TaskDto : IDto
{
// ReSharper disable ConvertToAutoPropertyWithPrivateSetter
private int _id;
public int ID { get { return _id; } }
// ReSharper restore ConvertToAutoPropertyWithPrivateSetter
public int TaskSequence { get; set; }
public TaskDto()
{
}
}
}
理想情况下,我的ID无法设置。如果我给ID属性一个自动的私有setter - XML Serializer会引发一个拟合。我认为解决方法是described here,但它似乎不适用于非集合?我宁愿不必在此时使用DataContract重写。
'CableSolve.Web.Api.WorkflowServicesProxy.TaskDto'不包含'ID'的定义,也没有接受第一个类型为'CableSolve.Web.Api.WorkflowServicesProxy.TaskDto'的扩展方法'ID'
答案 0 :(得分:1)
deserialiser只是C#代码。它需要一个序列化属性的setter。因此,您必须为XML序列化程序要序列化的每个属性都有一个getter和setter;它还要求财产公开。
此外,您不需要该类的空构造函数。
[Serializable]
[XmlRoot("Task"), SoapType("Task")]
public class TaskDto : IDto
{
public int ID { get; set; }
public int TaskSequence { get; set; }
}
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx