[C#.NET] 如何不序列化欄位、屬性

  • 8966
  • 0
  • C#
  • 2016-07-11

[C#.NET] 如何不序列化欄位、屬性

當我們使用公開屬性以及公開欄位時,都可以順利的被序列化,

 


public class MyClass
{
    public int ID;

    public string Address;

    private int _age;

    public string Name { get; set; }

    public int Age
    {
        get { return _age; }
        set { _age = value; }
    }
}

 

Xml序列化成檔案後的結果就像下圖:

 

image

 

JSON

image

 

bin,因為bin檔案肉眼看不懂,所以用反序列化表示

image


但總是會有不想要存成檔案的欄位或屬性

 

JSON及XML 若是不想被序列化 "屬性" 及 "欄位" 使用以下Attribute:

[System.Xml.Serialization.XmlIgnore]
[System.Web.Script.Serialization.ScriptIgnore]
BinaryFormatter 若是不想被序列化 "屬性" 只要在相對應的 "欄位" 使用以下:
[NonSerialized] 

 
看個例子:

public class MyClass
{
    [NonSerialized]
    public int ID;

    public string Address;

    [NonSerialized]
    private int _age;

    public string Name { get; set; }

    [System.Xml.Serialization.XmlIgnore]
    [System.Web.Script.Serialization.ScriptIgnore]
    public int Age
    {
        get { return _age; }
        set { _age = value; }
    }
}


 
Xml序列化,忽略Age屬性

 

image

 

JSON序列化,忽略Age屬性

image

 

BinaryFormatter序列化忽略 Age屬性 及 ID 欄位

 

 

 

 

 

 

image

 

若不知如合序列化請參考

BinaryFormatter:
http://www.dotblogs.com.tw/yc421206/archive/2011/06/03/26979.aspx
XML:
http://www.dotblogs.com.tw/yc421206/archive/2012/01/09/65028.aspx
http://www.dotblogs.com.tw/yc421206/archive/2011/05/20/25595.aspx
JSON:
http://www.dotblogs.com.tw/yc421206/archive/2011/12/23/63177.aspx

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo