2012-02-02 46 views
9

我正在經歷很多代碼和標記類,我現在想要使用Serialization屬性來保存它們。我還沒有編寫二進制序列化/反分類引擎,所以猜想一旦完成,我會回答自己的問題! - 但我認爲如果沒有問題,我會嘗試在這裏得到更早的答覆。我遇到了一些代碼,其中包含一個屬性,如:自動實現的屬性和序列化

public string Id 
    { 
     get; 
     set; 
    } 

「Id」是否被序列化?我明白,在編譯器的auto下創建一個類成員,但這是否正確序列化(因爲類實例的所有數據成員寫入存儲)?感覺不會,因爲你不能在屬性上放置Serialized/NonSerialized屬性。

在此先感謝。

+1

「這取決於」您使用的序列化。運行時序列化,XML序列化,數據合約序列化在這方面都是不同的。 – 2012-02-02 16:00:20

+0

你打算如何序列化你的課程? – 2012-02-02 16:01:02

+0

@John:我將要使用二進制序列化 – Jeb 2012-02-02 16:01:19

回答

8

您可以使用[field:NonSerialized]屬性將事件的後備字段標記爲不可序列化,但是看起來這不適用於自動屬性。使用自動屬性後臺字段將被序列化,並且阻止該行爲的唯一方法是將它們轉換爲常規屬性,並用正常的[NonSerialized]註釋顯式後臺字段。

2

正如@John在他的評論中指出的那樣,BinaryFormatterSystem.Runtime.Serialization.Formatters.Binary)將序列化您的自動生成的支持字段。您可以通過實現ISerializable接口來使用自定義序列化,然後爲您的類決定哪些值是序列化的。