使用反射创建由“类型”对象的内容表示的对象

时间:2012-02-10 04:18:03

标签: c# .net reflection

我使用反射来查找类似字符串的类型...

Type currentType = Type.GetType(typeName);

然后,我能够获得该类型的属性列表,如...

var props = currentType.GetProperties();

如何实例化此类型的新对象,然后根据道具列表中的属性列表开始为该对象的属性赋值?

2 个答案:

答案 0 :(得分:4)

使用您已拥有的值...

var created = Activator.CreateInstance(currentType);

foreach(var prop in props)
{
    prop.SetValue(created, YOUR_PROPERTY_VALUE, null);
}

答案 1 :(得分:1)

使用:

实例化currentType
var newInst = Activator.CreateInstance(currentType);

并使用以下内容指定属性值:

propInfo.SetValue(newInst, propValue, BindingFlags.SetProperty, null, null, null);

propInfo PropertyInfo的{​​{1}}实例propspropValue是您要分配给该媒体资源的对象。

编辑:

我总是倾向于使用更冗长的SetValue重载,因为我过去曾遇到短问题,但propInfo.SetValue(newInst, propValue, null);也可能有效。