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

首頁 > 學院 > 開發設計 > 正文

讓.NETxml序列化支持Nullable

2019-11-14 13:53:06
字體:
來源:轉載
供稿:網友

.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節點,除了給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。。。這樣一個奇葩節點。

 

今天網上閑逛,偶然發現竟然可以這樣:

   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

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德阳市| 通州区| 韶关市| 哈密市| 永城市| 金堂县| 布尔津县| 虹口区| 满洲里市| 南汇区| 营山县| 龙山县| 禄丰县| 庐江县| 宣化县| 克山县| 天台县| 化德县| 阿克苏市| 曲沃县| 久治县| 资兴市| 舒城县| 武汉市| 唐山市| 扬中市| 西藏| 赤峰市| 泸溪县| 安阳市| 揭西县| 曲麻莱县| 佛坪县| 南溪县| 汝州市| 馆陶县| 饶阳县| 淮阳县| 巧家县| 宝清县| 台东市|