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<T> DicToIEnumerable<T>(this List<Dictionary<string, object>> dicList) 
 | 
        { 
 | 
            List<T> list = new List<T>(); 
 | 
            foreach (Dictionary<string, object> dic in dicList) 
 | 
            { 
 | 
                list.Add(dic.DicToModel<T>()); 
 | 
            } 
 | 
            return list; 
 | 
        } 
 | 
  
 | 
        public static T DicToModel<T>(this Dictionary<string, object> dic) 
 | 
        { 
 | 
            T model = Activator.CreateInstance<T>(); 
 | 
            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; 
 | 
        } 
 | 
    } 
 | 
} 
 |