加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml 转换成对象(采用反射机制对对对象属性赋值)

发布时间:2020-12-16 23:42:11 所属栏目:百科 来源:网络整理
导读:/// summary /// 采用反射机制对对对象属性赋值 /// /summary /// param name="node"/param /// param name="P"/param public static void ReflexValue(XmlNode Nodes, object obj) { XmlNodeList nodeList = Nodes.ChildNodes; foreach (XmlNode node in no
       /// <summary>
        /// 采用反射机制对对对象属性赋值
        /// </summary>
        /// <param name="node"></param>
        /// <param name="P"></param>
        public static void ReflexValue(XmlNode Nodes,object obj)
        {
            XmlNodeList nodeList = Nodes.ChildNodes;
            foreach (XmlNode node in nodeList)
            {

                string filedName = node.Name.ToUpper();
                try
                {
                    //取到属性
                    PropertyInfo property = obj.GetType().GetProperty(filedName);
                    var valtype = property.PropertyType;
                    if (valtype.IsGenericType && valtype.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))//判断convertsionType是否为nullable泛型类  
                    {
                        //如果type为nullable类,声明一个NullableConverter类,该类提供从Nullable类到基础基元类型的转换  
                        System.ComponentModel.NullableConverter nullableConverter = new System.ComponentModel.NullableConverter(valtype);
                        //将type转换为nullable对的基础基元类型  
                        valtype = nullableConverter.UnderlyingType;
                    }
                    var val = node.InnerText;
                    //decimal dl = 0;
                    DateTime dt;
                    //if (valtype.Name == "Decimal" || valtype.Name == "Single")
                    //{
                    //    if (decimal.TryParse(val,out  dl))
                    //        val = dl.ToString();
                    //}
                    //else if (valtype.Name == "DateTime")
                    //{
                    //    if (DateTime.TryParse(val,out  dt))
                    //        val = dt.ToString();
                    //    else
                    //    {
                    //        val = DateTime.Now.ToString();
                    //    }
                    //}
                    if (valtype.Name == "DateTime")
                    {

                        if (DateTime.TryParseExact(val,"yyyyMMddHHmmss",System.Globalization.CultureInfo.CurrentCulture,System.Globalization.DateTimeStyles.None,out dt))
                            val = dt.ToString();
                        else
                        {
                            val = DateTime.Now.ToString();
                        }
                    }
                    if (valtype.Name != "String" && val == "")
                        property.SetValue(obj,null);
                    else
                        property.SetValue(obj,Convert.ChangeType(val,valtype),null);
                }
                catch (Exception ex)
                {
                    Common.WriteExceptionLog(ex);
                }
            }
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读