2014-04-24 60 views
1

我正在循環一個具有多個屬性的類,並且正在搜索具有相同ID的任何文本框。如果有一個匹配,那麼我想更新的屬性值,該文本框的值,但我收到此錯誤:反射返回對象中的SetValue與目標類型不匹配

Object does not match target type

這是代碼:

foreach (var prop in contactInfo.GetType().GetProperties())      
{       
    var ctrl = WizardCampaign.FindControl(prop.Name) ?? Page.Master.FindControl(prop.Name);   

    if (ctrl != null) 
    { 
     if (ctrl.GetType() == typeof(TextBox)) 
     { 
      var r = (TextBox)ctrl;                                                
      prop.SetValue(prop, r.Text, null);         
     } 
    } 
} 
+0

而不是'如果(CTRL!= NULL)'和'如果(ctrl.GetType()== typeof運算(文本框))'你可以將它們結合起來,包括派生的對象從文本框使用'if(ctrl是TextBox)' – Silvermind

回答

5

看看這裏:

prop.SetValue(prop, r.Text, null); 

SetValue應該把你想要改變作爲第一個參數的對象,但你傳遞PropertyInfo對象。我相信你的實際代碼應該是:

prop.SetValue(contactInfo, r.Text, null); 
+0

當然 - 謝謝 – okenshield

相關問題