2012-10-23 47 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

感謝您的答案 –