У меня есть коллекция свойств класса и вы хотите обновить каждое значение, итерации по коллекции через индекс.Как обновить свойство с помощью метода Type.GetProperties()?
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 (...), но я потерялся в аргументах его конструктора, поэтому я оставил.
Я хочу, чтобы иметь возможность обновлять значение свойства в моей коллекции, просто используя индекс.
Спасибо за помощь
Имейте в виду, что отражение довольно дорого. Вместо вызова функции GetPropertyOfMyClass() 'снова и снова вам может понадобиться кэшировать результаты. – tanascius