设为首页 加入收藏

TOP

动态类型序列化(五)
2019-09-17 18:55:11 】 浏览:116
Tags:动态 类型 序列化
t", data, doc)); } return element; } /// <summary> /// 创建动态类型的xml /// </summary> /// <param name="name"></param> /// <param name="data"></param> /// <param name="doc"></param> /// <returns></returns> private static XmlElement GetDynamicXml(string name, dynamic data, XmlDocument doc) { if (data == null) return null; var element = doc.CreateElement(name); element.SetAttribute("Type", "dynamic"); element.SetAttribute("Classify", Classify.Dynamic.ToString()); foreach (DictionaryEntry item in (IDictionary)data.Dictionary) { var child = doc.CreateElement("Element"); child.AppendChild(GetXml("Key", item.Key ?? string.Empty, doc)); child.AppendChild(GetXml("Value", item.Value ?? string.Empty, doc)); element.AppendChild(child); } return element; } /// <summary> /// 创建字典类型的xml /// </summary> /// <param name="name"></param> /// <param name="datas"></param> /// <param name="doc"></param> /// <returns></returns> private static XmlElement GetIDictionaryXml(string name, object datas, XmlDocument doc) { if (datas == null) return null; var element = doc.CreateElement(name); element.SetAttribute("Type", typeof(IDictionary).FullName); element.SetAttribute("Classify", Classify.Dictionary.ToString()); element.SetAttribute("KeyGenericAssembly", datas.GetType().GetGenericArguments()[0].Assembly.FullName); element.SetAttribute("KeyGenericType", datas.GetType().GetGenericArguments()[0].FullName); element.SetAttribute("ValueGenericAssembly", datas.GetType().GetGenericArguments()[1].Assembly.FullName); element.SetAttribute("ValueGenericType", datas.GetType().GetGenericArguments()[1].FullName); foreach (DictionaryEntry data in (IDictionary)datas) { var child = doc.CreateElement("Element"); child.AppendChild(GetXml("Key", data.Key ?? string.Empty, doc)); child.AppendChild(GetXml("Value", data.Value ?? string.Empty, doc)); element.AppendChild(child); } return element; } /// <summary> /// 创建自定义类 /// </summary> /// <param name="name"></param> /// <param name="data"></param> /// <param name="doc"></param> /// <returns></returns> private static XmlElement GetCustomXml(string name, object data, XmlDocument doc) { if (data == null) return null; var element = doc.CreateElement(name); element.SetAttribute("Assembly",MetaDataManager.Assembly.GetAssemblySortName(data.GetType().Assembly)); element.SetAttribute("Type", data.GetType().FullName); element.SetAttribute("Classify", Classify.Custom.ToString()); data.GetType().GetProperties().ForEach(property => { var item = GetXml(property.Name, property.GetValue(data), doc); if (item != null) element.AppendChild(item); }); return element; }
首页 上一页 2 3 4 5 6 7 下一页 尾页 5/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇理解依赖注入和控制反转 下一篇RefulApi自动化测试~Hitchhiker的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目