XML | HTML | TXT
您当前位置:软件开发 >> 新闻动态 >> 软件开发技术 >> 浏览文章

C# 反射动态判断转换属性类型值生成类实例

///


/// 为指定对象分配参数
///

/// 待赋值的类型
/// 字段/值
/// 
private T Assign(Dictionary dic) where T : new()
{
Type t = typeof (T);
T entity = new T();
var fields = t.GetProperties();

string val = string.Empty;
object obj = null;
foreach (var field in fields)
{
if (!dic.Keys.Contains(field.Name))
continue;
val = dic[field.Name];
//非泛型
if (!field.PropertyType.IsGenericType)
obj = string.IsNullOrEmpty(val) ? null : Convert.ChangeType(val, field.PropertyType);
else //泛型Nullable<>
{
Type genericTypeDefinition = field.PropertyType.GetGenericTypeDefinition();
if (genericTypeDefinition == typeof (Nullable<>))
{
obj = string.IsNullOrEmpty(val)
? null
: Convert.ChangeType(val, Nullable.GetUnderlyingType(field.PropertyType));
}
}
field.SetValue(entity, obj, null);
}


return entity;
}


手机:18678812288 E-Mail:1069706080@qq.com
地址:山东省济南市舜耕路泉城公园东门园内向北50米 鲁ICP备07011972号 版权所有2008-2013 山东赢德信息科技有限公司