/// <summary>
/// 字典类型转化为对象
/// </summary>
/// <param name="dic"></param>
/// <returns></returns>
public T DicToObject<T>(Dictionary<string, object> dic) where T : new()
{
var md = new T();
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
TextInfo textInfo = cultureInfo.TextInfo;
foreach (var d in dic)
{
var filed = textInfo.ToTitleCase(d.Key);
try
{
var value = d.Value;
md.GetType().GetProperty(filed).SetValue(md, value);
}
catch (Exception e)
{
}
}
return md;
}
其中将字符串转化为首字母大写,既符合c#属性命名规范
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
TextInfo textInfo = cultureInfo.TextInfo;
var filed = textInfo.ToTitleCase(“name”);
得到的field值为:Name
其中对象的赋值利用了反射原理,获得对象的属性,并为它们一一赋值。
md.GetType().GetProperty(filed).SetValue(md, value);