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 IEnumerable DicToIEnumerable(this List> dicList) { foreach (Dictionary dic in dicList) { T model = Activator.CreateInstance(); foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance)) { if (!dic.TryGetValue(property.Name, out object value)) continue; property.SetValue(model, value?.ToString().ChangeType(property.PropertyType), null); } yield return model; } } public static T DicToModel(this Dictionary dic) { T model = Activator.CreateInstance(); PropertyInfo[] propertyInfos = typeof(T).GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance); foreach (var property in propertyInfos) { object value = null; if (!dic.TryGetValue(property.Name, out value)) { if (!dic.TryGetValue(property.Name.FirstLetterToUpper(), out value)) { if (!dic.TryGetValue(property.Name.FirstLetterToLower(), out value)) { continue; } } }; property.SetValue(model, value?.ToString().ChangeType(property.PropertyType)); } return model; } } }