2012-10-23 28 views
2

我有一个样本类更新使用反射和属性的名称的类属性作为字符串

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]; 

帮助!谢谢 !!

回答

5

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

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

看到这个网址:http://msdn.microsoft.com/en-us/library/axt1ctd9.aspx

+0

非常感谢,没很好的诀窍。 –

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

感谢您的答案 –