2014-11-17 71 views
0

所以我有一個名爲PaypalTransaction的對象這裏是開始它,不需要顯示所有屬性來解釋問題。將屬性值添加到對象從字典

public class PaypalTransaction 
{ 
    public string first_name { get; set; } 
    public string last_name { get; set; } 
    public string custom { get; set; } 
    public string payer_email { get; set; } 
    .... 
    .... 
} 

現在我的問題是,我有一個foreach循環具有每個鍵作爲一個字符串

PaypalTransaction trans = new PaypalTransaction(); 
foreach(string key in keys) 
{ 
    // key = "first_name" , or "last_name , or "custom" 
    // how would I set the value of trans based on each key 
    // so when key = "first_name , I want to set trans.first_name 
    // something like trans.PropName[key].Value = 
    // I know that code isn't real , but with reflection i know this is possible 

} 
+0

使用反射或簡單地使用'Dictionary ' –

回答

1

你可以從跨對象屬性的收集和循環之前進行緩存。你可以遍歷它並設置適當屬性的值。以下示例可能有所幫助:

PaypalTransaction trans = new PaypalTransaction(); 

      PropertyInfo[] properties = trans.GetType().GetProperties(); 

      foreach (string key in keys) 
      { 
       properties.Where(x => x.Name == key).First().SetValue(trans, "SetValueHere"); 

      } 

您可能需要優化以上代碼以獲得性能和其他可能的例外。

+0

現在不關心性能,當我需要開始關心時,因爲得到如此之多的購買速度太快而導致陷入困境 - 我有事情進展順利 –

+0

我其實是在做一個看起來非常接近這個的答案,但沒有使用lambda,我不確定如何使用.SetValue,謝謝,這應該起作用,我會在接受它時讓我接受 –