我试图为某个属性设置一个值,但我得到一个"目标异常对象始终不匹配目标类型错误"。
属性类
class WizardProperties
{
public int IncIncidentType { get; set; }
}
我尝试设置属性值
的代码段 public void _wizardControl_NextButtonClick(object sender, WizardCommandButtonClickEventArgs e)
{
foreach (Control c in e.Page.Controls)
{
WizardProperties props = new WizardProperties();
SearchLookUpEdit slue = new SearchLookUpEdit();
foreach (var property in props.GetType().GetProperties())
{
if (!(c is Label))
{
if (property.Name == c.Name)
{
MessageBox.Show("Matchhh!!");
if (c is SearchLookUpEdit)
{
slue = (SearchLookUpEdit)c;
}
PropertyInfo info = props.GetType().GetProperty(property.Name);
int type = Convert.ToInt32(slue.EditValue);
info.SetValue(property,type,null);
}
}
}
}
}
属性在单独的类中声明,错误发生在:info.SetValue(property,type,null)。我添加了null作为第三个参数(在搜索此错误时找到了解决方案),但这对我没有用。类型变量具有有效的int。 如何修复setValue行?
编辑: 只需更改
info.SetValue(property,type,null);
要
info.SetValue(props,type,null);
修正了错误
答案 0 :(得分:0)
看起来您正在尝试在PropertyInfo
对象上设置表示要设置的属性的属性值,而不是在props
上设置该类的实例。您还在循环浏览PropertyInfo
的属性时第二次检索props
,因此我已将其删除。我也假设一旦你使这个代码工作,你实际上将使用props
做一些事情。请尝试以下。:
foreach (Control c in e.Page.Controls)
{
WizardProperties props = new WizardProperties();
SearchLookUpEdit slue = new SearchLookUpEdit();
foreach (var property in props.GetType().GetProperties())
{
if (!(c is Label) && property.Name == c.Name)
{
MessageBox.Show("Matchhh!!");
if (c is SearchLookUpEdit)
{
slue = (SearchLookUpEdit)c;
}
int type = Convert.ToInt32(slue.EditValue);
property.SetValue(props,type,null);
}
}
}