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); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |