using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace WIDESEAWCS_Core.Helper { public static class ObjectExtension { public static List DicToIEnumerable(this List> dicList) { List list = new List(); foreach (Dictionary dic in dicList) { list.Add(dic.DicToModel()); } return list; } public static T DicToModel(this Dictionary dic) { T model = Activator.CreateInstance(); PropertyInfo[] propertyInfos = typeof(T).GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance); Dictionary upperDic = dic.ToDictionary(k => k.Key.ToUpper(), v => v.Value); foreach (var property in propertyInfos) { object value = null; if (!upperDic.TryGetValue(property.Name.ToUpper(), out value)) { continue; } property.SetValue(model, value?.ToString().ChangeType(property.PropertyType)); } return model; } } }