gpt4 book ai didi

c# - XML Serializer 不序列化具有公共(public) getter 但没有 setter 的属性

转载 作者:行者123 更新时间:2023-12-05 04:18:40 25 4
gpt4 key购买 nike

我想知道我是否遗漏了什么……我的理解是我应该能够在反序列化后获得 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 属性一个自动的、私有(private)的 setter —— XML Serializer 会抛出一个合适的。我认为解决方法是 described here ,但它似乎不适用于非收藏品?我宁愿此时不必使用 DataContract 重写。

'CableSolve.Web.Api.WorkflowServicesProxy.TaskDto' does not contain a definition for 'ID' and no extension method 'ID' accepting a first argument of type 'CableSolve.Web.Api.WorkflowServicesProxy.TaskDto' could be found

最佳答案

反序列化器只是 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

关于c# - XML Serializer 不序列化具有公共(public) getter 但没有 setter 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com