using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace WIDESEA_Core.Helper
|
{
|
public static class ObjectExtension
|
{
|
public static IEnumerable<T> DicToIEnumerable<T>(this List<Dictionary<string, object>> dicList)
|
{
|
foreach (Dictionary<string, object> dic in dicList)
|
{
|
T model = Activator.CreateInstance<T>();
|
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<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;
|
}
|
}
|
}
|