gpt4 book ai didi

c# - 使用 DataContractSerializer 时遇到问题

转载 作者:行者123 更新时间:2023-12-02 16:17:07 25 4
gpt4 key购买 nike

我在使用 DataContractSerializer 序列化不可变实例时遇到问题,因为我正在序列化的类的属性缺少 setter 。问题是我只想序列化实例(只是为了将其写入日志),并且我永远不需要反序列化它。有没有办法绕过这种行为?

我尝试序列化的类:

[DataContract]
public class Person
{
private readonly string _name;

[DataMember]
public string Name
{
get { return _name; }
}

public Person(string name)
{
_name = name;
}
}

用于序列化类的代码:

public string Serialize()
{
var serializer = new DataContractSerializer(typeof(Person));
StringBuilder stringBuilder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(stringBuilder)) {
serializer.WriteObject(writer, this);
}
return stringBuilder.ToString();
}

最佳答案

您可以将 [DataMember] 放在字段上,从而允许您拥有属性 getter。这些字段仍然可以是私有(private)的。但是它不能是只读,因为它需要构造对象然后设置字段。

[编辑]这将导致使用字段名称,除非您使用 [DataMember(Name = "Name1")]

关于c# - 使用 DataContractSerializer 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3138583/

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