簡體   English   中英

XML序列化是否需要屬性進行讀/寫?

[英]Does XML Serialization Require Properties to be Read/Write?

我在班上測試XML序列化,但我注意到在運行程序時ID號沒有保存。

所以我環顧四周並修改了一些東西,但沒有任何效果,然后我看到除了ID之外的所有字段都有get和set屬性。 所以我添加了一套; 財產到我的身份證號碼和工作的poof。 問題是,是否必須設定; 得到; 在我的所有屬性上運行XML序列化是否有效?

我不希望在創建對象(自動生成)后修改ID號。

是的,這基本上是對XML序列化的限制。 XML序列化文檔

只能序列化公共屬性和字段。 屬性必須具有公共訪問器(get和set方法)。 如果必須序列化非公共數據,請使用BinaryFormatter類而不是XML序列化。

XML序列化並不像人們想象的那樣靈活。

請注意,如果要將非公共數據序列化為xml, DataContractSerializer可能很有用。 它不像XmlSerializer那樣靈活(並且您不能指定屬性),但它可以序列化非公共數據:

[DataContract]
public class Person {
    [DataMember]
    private int id;

    public int Id {get {return id;}} // immutable

    public Person(int id) { this.id = id; }

    [DataMember]
    public string Name {get;set;} // mutable
}

另請注意,它不使用您的構造函數...或者實際上任何構造函數 - 它作弊,允許它創建一個對象並在之后填充數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM