我有一個文本框和一個自定義屬性是bool的datagridview。我使用反射在運行時啓用文本框或datagridview,具體取決於我的自定義屬性的設置。代碼遍歷每個控件的屬性,如果它是我的自定義屬性和true,那麼我啓用該控件。C#反射控制屬性參數計數不匹配異常
我只在datagridview中出現「參數計數不匹配」異常。我找到了一個解決方法,但我不知道它爲什麼有效。下面的第一個foreach循環引發異常。第二個不是。
我做了一些搜索,我發現指向屬性是索引器的點。我知道它不是和GetIndexParameters()。對於兩種控件類型,屬性的長度都是0。爲什麼第一個例子沒有工作?
Type type = control.GetType();
PropertyInfo[] properties = type.GetProperties();
//Exception
foreach (PropertyInfo property in properties)
{
if (property.Name == PropName & Convert.ToBoolean(property.GetValue(control, null)) == true)
(control as Control).Enabled = true;
}
//No excpetion
foreach (PropertyInfo property in properties)
{
if (property.Name == PropName)
if(Convert.ToBoolean(property.GetValue(control, null)) == true)
(control as Control).Enabled = true;
}