我有一个类'属性的集合,并希望通过索引遍历集合来更新每个属性的值。
1)我以这种方式创建属性集合
private PropertyInfo[] GetPropertiesOfMyClass()
{
Type myType = (typeof(myClass));
PropertyInfo[] PropertyInfoArray = myType.GetProperties(
BindingFlags.Public |
BindingFlags.Instance);
return PropertyInfoArray;
}
2)现在,我想根据索引设置每个值的值
public void UpdateProperty(MyClass instanceOfMyClass, string valueToUpdate, int index)
{
//TODO:
//1. Get an individual property from the GetPropertyOfMyClass() using index
//2. Update the value of an individual property of the instanceOfMyClass
}
我希望能够从控制器中调用 UpdateProperty ,如下所示:
UpdateProperty(instanceOfMyClass, valueToUpdate, indexOfTheProperty);
老实说,我不知道如何让 instanceOfMyClass 参与游戏,因为 GetProperty 只能与 myClass 一起玩。
因为我看到我可以使用Name,PropertyType,...来获取有关该属性的信息。所以,我也试过 GetPropertyOfMyClass()[index] .SetValue(...),但是我在构造函数的参数中丢失了,所以我放弃了。
我想要的是只需使用索引即可更新集合中属性的值。
感谢您的帮助
答案 0 :(得分:5)
你的猜测是正确的。您使用SetValue()
更新值 - 这是如何做到的:
GetPropertyOfMyClass()[index].SetValue( instanceOfMyClass, valueToUpdate, null);
最后一个参数can be null:
索引属性的可选索引值。对于非索引属性,此值应为null。