【发布时间】:2015-10-14 16:31:17
【问题描述】:
我有一个文本框和一个带有布尔自定义属性的数据网格视图。我正在使用反射在运行时启用文本框或数据网格视图,具体取决于我的自定义属性的设置方式。代码循环遍历每个控件的属性,如果它是我的自定义属性并且为 true,则启用该控件。
我仅在 datagridview 上遇到“参数计数不匹配”异常。 我找到了解决方法,但我不确定它为什么会起作用。下面的第一个 foreach 循环会引发异常。第二个没有。
我进行了一些搜索,发现该属性是一个索引器。我知道它不是,并且 GetIndexParameters().Length 属性的两种控件类型都为 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;
}
【问题讨论】:
标签: c# reflection