一尘不染

为什么没有setter的属性未序列化

c#

我有一个可序列化的类,并且该类中的一个属性在Guidgetter中生成一个。该属性没有实现设置程序,在序列化期间将被忽略。这是为什么,我总是必须实现一个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 {}
    }
}

更新

您能否指出我该如何定义其值永不更改或为其内部生成值的属性?


阅读 281

收藏
2020-05-19

共1个答案

一尘不染

它的局限性在于XmlSerializer它不对只读属性进行序列化,您在第二个示例中所做的本质上是使它进行序列化的技巧,但是,如果以后需要对它进行反序列化,它是没有用的。

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

2020-05-19