麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

讓.NETxml序列化支持Nullable

2019-11-14 13:53:06
字體:
來源:轉載
供稿:網(wǎng)友

.NET的序列化,關于契約類的生成我們都是通過xsd.exe,對于值類型的可空判斷是通過聲明同名+Specified的bool屬性來判斷,比如:

    public class Person    {        public string Name        {            get;            set;        }        public int Age        {            get;            set;        }
     [xmlIgnore]
public bool AgeSpecified { get; set; } }

這樣,當想生成Age節(jié)點,除了給Age賦值外還需要設置AgeSpecified=true。而反序列化時,則可以通過判斷AgeSpecified是否為true來知道Age屬性是否有被賦值。嗯,雖然麻煩點,但能夠解決問題,挺不錯,而且這還是xsd給我們生成的,省事。但如果你希望Person類即要支持xml序列化也支持json序列化呢?你該如何處理這個Specified字段?

有人該問了,為何不直接定義Age為可空類型?您可以試試,序列化出來的xml如下:

<?xml version="1.0" encoding="utf-8"?><Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  <Name>name</Name>  <Age xsi:nil="true" /></Person>

Age屬性我是沒有賦值的,但卻生成了Age xsi。。。這樣一個奇葩節(jié)點。

 

今天網(wǎng)上閑逛,偶然發(fā)現(xiàn)竟然可以這樣:

   public class Person    {        public string Name        {            get;            set;        }        public int? Age        {            get;            set;        }        public bool ShouldSerializeAge()        {            return Age != null;        }    }

竟然有ShouldSerialize特性,如果能夠集成進xsd就好了,不然為了支持nullable,所有值類型都這么搞一次也挺累的。

https://msdn.microsoft.com/en-us/library/53b8022e(v=vs.110).aspx

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久中出 | 久久久成人999亚洲区美女 | 成人不卡在线观看 | 欧美一级黄色网 | 国产在线1区| 99精品视频99 | av不卡毛片 | 日韩欧美激情视频 | 美女性感毛片 | 91av久久| 91成人免费在线观看 | 婷婷久久影院 | 7777奇米成人四色影视 | 久久精品99久久久久久2456 | 日本高清在线免费 | 免费放黄网站在线播放 | 毛片电影在线看 | 国产成人高潮免费观看精品 | sese在线视频 | 欧美 日韩 亚洲 中文 | 日韩一级片免费 | 欧美特一级 | 久久久久99一区二区三区 | xnxx 日本免费| 毛片免费观看视频 | 成人在线视频在线观看 | 久久99国产精品视频 | 国产免费一区二区三区最新不卡 | 国产成人精品免费视频大全办公室 | 新久久久久久 | 天堂精品久久 | 北原夏美av | av成人免费| 欧美性受ⅹ╳╳╳黑人a性爽 | 国产高潮国产高潮久久久91 | 91精选视频| 黄色片网站在线免费观看 | 欧美性生活免费视频 | 永久免费黄色片 | 国产一区二区三区手机在线 | 日本免费a∨ |