博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过反射初始化Class值【原】
阅读量:6378 次
发布时间:2019-06-23

本文共 4645 字,大约阅读时间需要 15 分钟。

public class TbRoute        {            private string _routeid;            private string _routenm;            private bool _flag;            private int _count;            public string RouteId            {                set { _routeid = value; }                get { return _routeid; }            }            public string RouteNM            {                set { _routenm = value; }                get { return _routenm; }            }            public bool Flag            {                set { _flag = value; }                get { return _flag; }            }            public int Count            {                set { _count = value; }                get { return _count; }            }        }        private static object InitClassValue(object obj, List
listValues) { Type t = obj.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach (PropertyInfo pi in t.GetProperties()) { for (int i = 0; i < listValues.Count; i++) { string[] values = (string[])listValues[i]; if (values.Length.Equals(2)) { if (values[0].ToLower().Equals(pi.Name.ToLower())) { object value = GetDbTypeValue(pi.PropertyType, values[1]); pi.SetValue(obj, value, null); break; } } } } return obj; } private static object GetDbTypeValue(Type type, object obj) { object value = ""; if (type.Equals(typeof(int)) || type.IsEnum) try { value = Int32.Parse(obj.ToString()); } catch { value = 0; } else if (type.Equals(typeof(long))) try { value = Int32.Parse(obj.ToString()); } catch { value = 0; } else if (type.Equals(typeof(double)) || type.Equals(typeof(Double)) || type.Equals(typeof(Single))) try { value = decimal.Parse(obj.ToString()); } catch { value = 0.0; } else if (type.Equals(typeof(DateTime))) try { value = DateTime.Parse(obj.ToString()); } catch { value = DateTime.MinValue; } else if (type.Equals(typeof(bool))) try { value = Boolean.Parse(obj.ToString()); } catch { value = false; } else if (type.Equals(typeof(string))) try { value = obj.ToString(); } catch { value = ""; } else if (type.Equals(typeof(decimal))) try { value = decimal.Parse(obj.ToString()); } catch { value = 0.0; } else if (type.Equals(typeof(byte[]))) try { value = (byte[])obj; } catch { value= new byte[]{}; } else if (type.Equals(typeof(Guid))) try { value = obj.ToString(); } catch { value = ""; } return value; } private void FormTest_Load(object sender, EventArgs e) { List
listValues = new List
(); listValues.Add(new string[] { "RouteId", "10000" }); listValues.Add(new string[] { "RouteNM", "xsm" }); string ss = "[[\"RouteId\",\"10000\"],[\"RouteNM\",\"xsm\"],[\"Flag\",\"true\"],[\"Count\",\"1\"]]"; listValues = JsonHelp.JSONToObject
>(ss); TbRoute t = new TbRoute(); t = (TbRoute)InitClassValue(t, listValues); }

 

转载于:https://www.cnblogs.com/xsmhero/archive/2013/04/02/2995593.html

你可能感兴趣的文章
Java构造方法里面super()的使用
查看>>
日常记录(二)SpringMVC导出Excel
查看>>
Redis Sentinel
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
sed&awk part02
查看>>
submin完整安装教程!(可能是国内最完整的了)
查看>>
程序员写简历时必须注意的技术词汇拼写(持续更新...)
查看>>
“浅薄”绝不该是中国程序员的性格特征
查看>>
设计模式-外观模式
查看>>
学术研究网站
查看>>
自定义裁剪和缩放图像的jQuery插件Cropit使用的大坑
查看>>
MinGW编译wxWidgets问题
查看>>
我的友情链接
查看>>
dubbo和docker
查看>>
使用Notepad++将多行数据合并成一行
查看>>
gitlab服务器配置
查看>>
teamcity实践
查看>>
MapReduce Streaming
查看>>
[转载] Knowledge Management and Engineering——05 知识管理的概念
查看>>