public static object DeserializeModel<T>(object dataModel) { Type type = typeof(T); Object entity = Activator.CreateInstance(type); Type data = dataModel.GetType(); if (data.Name.Contains("List")) { List<T> listCall = new List<T>(); //須要被轉換的對象 IEnumerable<object> list = dataModel as IEnumerable<object>; foreach (var sourceModel in list) { entity = Activator.CreateInstance(type); //循環須要被反對對象的字段 foreach (var item in type.GetProperties()) { var source = sourceModel.GetType(); if (source.GetProperty(item.Name) != null) { var val = source.GetProperty(item.Name).GetValue(sourceModel, null); item.SetValue(entity, val); } } listCall.Add((T)entity); } return listCall; } else { foreach (var item in type.GetProperties()) { if (data.GetProperty(item.Name) != null) { var val = data.GetProperty(item.Name).GetValue(dataModel, null); item.SetValue(entity, val); } } return (T)entity; } }
根據T類型將傳入進來的Object對象進行反射,有待完善記錄一下spa