[英]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.