Как обновить свойство, используя метод Type.GetProperties ()? - PullRequest
1 голос
/ 08 апреля 2010

У меня есть коллекция свойств класса, и я хотел бы обновить значение каждого из них, перебирая коллекцию по индексу.

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 (...) , но я был потерян в аргументах его конструктора, поэтому я отказался.

Я хочу иметь возможность обновлять значение свойства в моей коллекции, просто используя индекс.

Спасибо за помощь

1 Ответ

5 голосов
/ 08 апреля 2010

Ваше предположение было верным. Вы используете SetValue() для обновления значения - вот как это сделать:

GetPropertyOfMyClass()[index].SetValue( instanceOfMyClass, valueToUpdate, null);

Последний аргумент может быть нулевым :

Необязательные значения индекса для индексированных свойств. Это значение должно быть нулевым для неиндексированных свойств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...