gpt4 book ai didi

c# - 为什么没有 setter 的属性没有序列化

转载 作者:IT王子 更新时间:2023-10-29 03:37:36 25 4
gpt4 key购买 nike

我有一个可序列化的类,我的类中的一个属性在 getter 中生成了一个 Guid。该属性不实现 setter,并在序列化期间被忽略。为什么会这样,我是否总是必须实现一个 setter 才能序列化我的属性。

[Serializable]
public class Example
{
[XmlAttribute("id")]
public string Id
{
get
{
return Guid.NewGuid().ToString();
}
}
}

我尝试实现一个空的 setter,它得到了正确的序列化。

[Serializable]
public class Example
{
[XmlAttribute("id")]
public string Id
{
get
{
return Guid.NewGuid().ToString();
}
set {}
}
}

更新:

您能指出我应该如何定义值永不改变的属性或值在内部生成的属性吗?

最佳答案

这是 XmlSerializer 的一个限制,它不会序列化只读属性,您在第二个示例中所做的基本上是让它序列化的 hack,但是,如果您需要,它是无用的稍后反序列化。

或者,您可以切换到使用 DataContractSerializer , 更灵活。

关于c# - 为什么没有 setter 的属性没有序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13401192/

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