国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中將xml文件反序列化為實例時采用基類還是派生類的知識點討論

2020-01-23 20:46:22
字體:
來源:轉載
供稿:網友

基類:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DeserializeTest{ public class SettingsBase { private string m_fileName; public string FileName  {  get { return m_fileName; }  set { m_fileName = value; } }   }}

派生類:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DeserializeTest{ public class WorldWindSettings : SettingsBase {  public WorldWindSettings()   : base()  {  }  private string m_proxyUrl = "";  public string ProxyUrl  {   get   {    return m_proxyUrl;   }   set   {    this.m_proxyUrl = value;   }  } }}

主函數調用測試代碼為:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Xml.Serialization;namespace DeserializeTest{ class Program {  static void Main(string[] args)  {   //測試1:測試將xml文件反序列化為基類實例。測試通過。只要xml文件的根節點的名字與被反序列化的類的名字一致即可   string fileNameBase = @"D:/MyProject/DeserializeTest/DeserializeTest/bin/Debug/GobalConfig/SettingsBase.xml";   SettingsBase settingsBase;   XmlSerializer serBase = new XmlSerializer(typeof(SettingsBase));   using (TextReader trBase = new StreamReader(fileNameBase))   {    settingsBase = (SettingsBase)serBase.Deserialize(trBase);    settingsBase.FileName = fileNameBase;   }   //測試2:測試將xml文件反序列化為子類實例。測試通過。只要xml文件的根節點的名字與被反序列化的類的名字一致即可。當然了,用基類的實例引用去指向反序列化后的派生類的實例也是沒問題的。   string fileName = @"D:/MyProject/DeserializeTest/DeserializeTest/bin/Debug/GobalConfig/WorldWind.xml";   SettingsBase settings;//當前了此處定義為WorldWindSettings settings;也沒問題   Type type = typeof(WorldWindSettings);//因為xml文件的根節點名稱是WorldWindSettings,此處只能為WorldWindSettings,而不能為SettingsBase   XmlSerializer ser = new XmlSerializer(type);   using (TextReader tr = new StreamReader(fileName))   {    //settings = (WorldWindSettings)ser.Deserialize(tr);//這兩句代碼都可以通過!    settings = (SettingsBase)ser.Deserialize(tr);    settings.FileName = fileName;   }   System.Console.WriteLine("Hello");  } }}

基類的XML文件:

<?xml version="1.0" encoding="utf-8"?><SettingsBase> <FileName>WorldWind.xml</FileName></SettingsBase>

派生類的XML文件:

<?xml version="1.0" encoding="utf-8"?><WorldWindSettings> <FileName>WorldWind.xml</FileName> <ProxyUrl>www.baidu.com</ProxyUrl></WorldWindSettings>

源碼下載:DeserializeTest.rar 提取碼:djpe

總結:將xml文件反序列化為類的實例的時候,只要xml文件的根節點的名字與被反序列化的類的名字一致即可。當然了,反序列化成功后,用基類的實例引用去指向反序列化后的派生類的實例也是沒問題的。

其它注意事項:

如果在一個類中有靜態的成員變量,則在該類調用構造函數實例化之前,會首先實例化靜態的成員變量。

以上就是本次介紹的全部知識點內容,感謝大家的學習和對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柞水县| 凯里市| 来安县| 志丹县| 平和县| 南皮县| 灵川县| 瓦房店市| 健康| 耒阳市| 化隆| 南投市| 独山县| 车致| 南投县| 珲春市| 五峰| 耿马| 高平市| 广河县| 陕西省| 集安市| 潞西市| 桦川县| 云龙县| 马关县| 泰兴市| 工布江达县| 儋州市| 大化| 阿图什市| 合山市| 孝昌县| 峨眉山市| 泗水县| 景德镇市| 尉氏县| 出国| 松原市| 资兴市| 北安市|