我有一个可序列化的类,并且该类中的一个属性在Guidgetter中生成一个。该属性没有实现设置程序,在序列化期间将被忽略。这是为什么,我总是必须实现一个setter才能序列化我的属性。
Guid
[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它不对只读属性进行序列化,您在第二个示例中所做的本质上是使它进行序列化的技巧,但是,如果以后需要对它进行反序列化,它是没有用的。
XmlSerializer
或者,您可以切换到使用DataContractSerializer,它更加灵活。