使用反射更新类属性,并将属性的名称更新为字符串

时间:2012-10-23 22:39:45

标签: c# reflection properties

我有一个示例类

public class sampleClass
{
    public string givenName { get; set; }
    public string familyName { get; set; }
}

以及IDictionary<string, object> dataModel中包含的该类的一组值。我可以使用反射来遍历dataModel并使用dataModel键来获取值。

我想做点什么:

void UpdateValues(IDictionary<string, object> dataModel)
{
    Type sourceType = typeof(sampleClass);
    foreach (PropertyInfo propInfo in (sourceType.GetProperties()))
    {
        if (dataModel.ContainsKey(propInfo.Name))
        {
            //  set propInfo value here
            propInfo.Value = dataModel[propInfo.Name];
        }
    }
}

但我不知道该怎么做

propInfo.Value = dataModel[propInfo.Name];

帮助!谢谢!!

2 个答案:

答案 0 :(得分:5)

你需要一个sampleClass实例来设置属性,然后你可以使用SetValue函数来做到这一点:

propInfo.SetValue(yourinstance, dataModel[propInfo.Name], null);

请参阅此网址:http://msdn.microsoft.com/en-us/library/axt1ctd9.aspx

答案 1 :(得分:1)

propInfo.SetValue(sampleClass, dataModel[propInfo.Name], null)