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, ListlistValues) { 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); }