簡體   English   中英

我們如何使用序列化的私有字段?

[英]How can we use serialized the private field?

class Program
{
    static void Main(string[] args)
    {
        var ball = new Ball();
        ball.MyApple.Name = "ramro apple";

        XmlSerializer ser = new XmlSerializer(typeof(Ball));
        var sb = new StringBuilder();
        var writer = new StringWriter(sb);

        ser.Serialize(writer, ball);

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(sb.ToString());

        XmlNodeReader reader = new XmlNodeReader(doc.DocumentElement);
        object meroBall = ser.Deserialize(reader);
        Ball myBall = (Ball)meroBall;
    }
}

public class Apple
{
    public string Name
    {
        get;
        set;
    }
}

public class Ball
{
    public Ball()
    {
        _apple = new Apple();
    }

    public Apple MyApple
    {
        get { return _apple; }
    }

    private Apple _apple;
}

在這里,我在Ball類中定義了私有字段Apple _apple。 它給我的MyApple空值。 但是,如果我將Apple _apple設置為公共字段,它將給出“ ramro apple”的值。 有什么方法可以通過使用私有字段來獲得該價值? 我嘗試

這是因為XmlSerializer僅適用於具有公共獲取和設置的成員。如果為MyApple提供公共設置器,它將起作用:

public class Ball
{
    public Ball()
    {
        _apple = new Apple();
    }

    public Apple MyApple
    {
        get { return _apple; }
        set { _apple = value; }
    }

    private Apple _apple;
}

當然,這還假定Ball和Apple這兩個類都具有不帶參數的公共構造函數。

暫無
暫無

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

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