Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Вопрос про рефлексию. Как присваивается значение?


Автор: vlsaf 22.1.2010, 12:57
Всем привет.

Есть некий объект myObj.
C помощью рефлексии я узнал, что у него есть свойство "LookAndFeel"

Теперь нужно присвоить значение.
Код

myObj.LookAndFeel.SkinName = "Money Twins";


Как это сделать?

PS 
Смущает, что у свойства LookAndFeel есть еще "подсвойства", одно из которых мне и нужно поменять. Если бы этого не было , то поменял бы просто 
Код

Type myType = myObj.GetType();
TypeDescriptor.GetProperties(myType)["LookAndFeel"].SetValue(myObj, "Money Twins");

Автор: diadiavova 22.1.2010, 13:11
vlsaf, у объекта PropertyInfo помимо метода SetValue есть ещё метод GetVaqlue, с его помощью получишь нужный тебе объект, а сним работай так же. 
Нет никаких подсвойств, просто свойство может возвращать сложный объект у которого в свою очередь тоже есть собственные свойства.

Автор: vlsaf 22.1.2010, 14:05
Чтобы использовать метод PropertyInfo.GetValue(), нужно заранее знать число параметров моего объекта.
Иначе идет исключение - несоответствие параметров.


Как узнать кол-во параметров в объекте?

Автор: diadiavova 22.1.2010, 14:09
Цитата(vlsaf @  22.1.2010,  14:05 Найти цитируемый пост)
Чтобы использовать метод PropertyInfo.GetValue()

Зачем? smile Это нужно для индексированных свойств, для обычных второй аргумент должен быть null.

Добавлено через 27 секунд
Всё написано в документации кстати.

Автор: vlsaf 22.1.2010, 14:34
Держи +


Все заработало  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)