您的位置:首页 > 编程语言 > C#

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

2013-12-24 10:30 267 查看
/// <summary>

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

/// </summary>

/// <typeparam name="T">待赋值的类型</typeparam>

/// <param name="dic">字段/值</param>

/// <returns></returns>

private T Assign<T>(Dictionary<string, string> 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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐