亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#序列化成XML注意細(xì)節(jié)

 更新時(shí)間:2012年11月29日 11:48:48   作者:  
最常用的序列化是把某個(gè)類序列化成二進(jìn)制文件.但有時(shí)我們也會(huì)把類序列化成xml文件,需要的朋友可以參考下
最常用的序列化是把某個(gè)類序列化成二進(jìn)制文件.但有時(shí)我們也會(huì)把類序列化成xml文件.
假如有如下一個(gè)類
復(fù)制代碼 代碼如下:

class Arwen
{
private Hashtable table = new Hashtable();
private TimeSpan time = new TimeSpan(0, 0, 1);
public Hashtable Table
{
get { return table; }
set { table = value; }
}
public TimeSpan Time
{
get { return time; }
set { time = value; }
}
public string Name { get; set;}
}

如果你把上面的類Arwen序列化成二進(jìn)制是一點(diǎn)問(wèn)題都沒(méi)有.只在在前面用加個(gè)[Serializable]就行.另外如果類中還有字段或?qū)傩允穷惖脑捯惨谀莻€(gè)類相應(yīng)的類定義前面加[Serializable].如果類中的某個(gè)字段或?qū)傩圆幌氡恍蛄谢辉谠谒懊婕覽NonSerialized]即可. 序列化成二進(jìn)制相當(dāng)于把所有信息原封不動(dòng)保存到二進(jìn)制文件中.不管是private字段還是public的.也不管是啥類型的
而序列化成xml則相較序列化成二進(jìn)制受到很多限制,主要有三個(gè).
1是只能序列化public的字段或?qū)傩? 
2是有些類型是不能序列化.比如上面的Hastable和TimeSpan這樣的類型.
3是類中必須有無(wú)參的構(gòu)造函數(shù)才能被序列化成xml.
那如果你實(shí)在想保存Hastable和TimeSpan這樣類型的信息時(shí)咋整啊?

那只能曲線救國(guó)了啊.中間做個(gè)轉(zhuǎn)換,先把Hastable 和Timespan轉(zhuǎn)換成其他類型.然后序列化成xml,反序列化回來(lái)的時(shí)候再轉(zhuǎn)換下.那也意味你要在原來(lái)的類中添加某個(gè)類型.比如新弄一個(gè)類pairs,有兩字段,對(duì)應(yīng)Hastable的鍵值對(duì),然后用個(gè)List<pairs>把Hastable中所有信息保存起來(lái).此時(shí)List<pairs>是可以被序列化的. 這顯然是個(gè)非常麻煩也非常笨的辦法.不過(guò)貌似沒(méi)更好的辦法啊.TimeSpan反正就可以先轉(zhuǎn)換成string類型了.

下面只說(shuō)下xml轉(zhuǎn)換的簡(jiǎn)單用法.像上面說(shuō)的Hashtable等類型不能被序列化,那可以用個(gè)特性讓其顯式聲明為不可被序列化.用[XmlIgnoreAttribute]即可
復(fù)制代碼 代碼如下:

using System.Xml.Serialization;
using System.IO;
class Arwen
{
private Hashtable table = new Hashtable();
private TimeSpan time = new TimeSpan(0, 0, 1);
public Arwen()
{
}
[XmlIgnoreAttribute]
public Hashtable Table
{
get { return table; }
set { table = value; }
}
[XmlIgnoreAttribute]
public TimeSpan Time
{
get { return time; }
set { time = value; }
}
}
Arwen weiwen = new Arwen();
weiwen.Time = new TimeSpan(1,2,3); // 1 hours , 2 minutes, 3 seconds
weiwen.Table.Add("arwen", 250);
string filename = @"c:\temp\arwen.xml";
XmlSerializer xs = new XmlSerializer(typeof(Arwen));
using (FileStream file = new FileStream(filename, FileMode.Create))
xs.Serialize(file, sa);

相關(guān)文章

  • C#調(diào)用第三方工具完成FTP操作

    C#調(diào)用第三方工具完成FTP操作

    這篇文章介紹了C#調(diào)用第三方工具完成FTP操作的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 解析C#中#region與#if的作用

    解析C#中#region與#if的作用

    以下是對(duì)C#中#region與#if的作用進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • C#最簡(jiǎn)單的字符串加密解密方法

    C#最簡(jiǎn)單的字符串加密解密方法

    這篇文章主要介紹了C#最簡(jiǎn)單的字符串加密解密方法,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-05-05
  • C#語(yǔ)言async?await工作原理示例解析

    C#語(yǔ)言async?await工作原理示例解析

    這篇文章主要為大家介紹了C#語(yǔ)言async?await工作原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 深入談?wù)凜#9新特性的實(shí)際運(yùn)用

    深入談?wù)凜#9新特性的實(shí)際運(yùn)用

    這篇文章主要給大家介紹了C#9新特性的實(shí)際運(yùn)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C#?Winform文本面板帶滾動(dòng)條的實(shí)現(xiàn)過(guò)程

    C#?Winform文本面板帶滾動(dòng)條的實(shí)現(xiàn)過(guò)程

    當(dāng)數(shù)據(jù)過(guò)多時(shí),往往無(wú)法在一頁(yè)中展示,所以非常需要一個(gè)滾動(dòng)條來(lái)調(diào)節(jié)頁(yè)面內(nèi)容,這篇文章主要給大家介紹了關(guān)于C#?Winform文本面板帶滾動(dòng)條的實(shí)現(xiàn)過(guò)程,需要的朋友可以參考下
    2022-12-12
  • c# volatile 關(guān)鍵字的拾遺補(bǔ)漏

    c# volatile 關(guān)鍵字的拾遺補(bǔ)漏

    這篇文章主要介紹了c# volatile 關(guān)鍵字的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-10-10
  • C#中is,as,using關(guān)鍵字的使用說(shuō)明

    C#中is,as,using關(guān)鍵字的使用說(shuō)明

    這篇文章主要介紹了C#中is,as,using關(guān)鍵字的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 將Qt項(xiàng)目升級(jí)到Qt6吐血經(jīng)驗(yàn)總結(jié)

    將Qt項(xiàng)目升級(jí)到Qt6吐血經(jīng)驗(yàn)總結(jié)

    很多朋友向小編反饋將Qt項(xiàng)目升級(jí)到Qt6頻繁出錯(cuò),該如何處理呢,今天小編給大家?guī)?lái)了將Qt項(xiàng)目升級(jí)到Qt6吐血經(jīng)驗(yàn)總結(jié),感興趣的朋友一起看看吧
    2021-07-07
  • C# 利用Aspose.Words.dll將 Word 轉(zhuǎn)成PDF

    C# 利用Aspose.Words.dll將 Word 轉(zhuǎn)成PDF

    關(guān)于word轉(zhuǎn)成pdf的方法網(wǎng)上有很多。大部分需要借助office 2007及以上版本的組件。安裝配置起來(lái)比較麻煩。今天偶然得之“Aspose.Words.dll”可以實(shí)現(xiàn)
    2013-08-08

最新評(píng)論