C# Доступ к свойствам обекта по имени
От: Roamer_KDN Россия  
Дата: 08.05.07 14:01
Оценка:
Есть задача, нужно в RUN-Time устанавливать параметры визуальных компонентов. Если коротко о задаче — то нужно отстраивать интерфейс, описание которого лежит в БД и грузится при запуске приложения и переходе с формы на форму. Проблема в том что прописывать switch для каждого компонента (или даже для группы компонентов), мне кажется, не очень красиво... относительно сохранения в XML — тоже отпадает по тому, что забивать эти данные юзер в БД будет ручками. Да ещё тонкость прога для КПК. Уважаемые форумчане подскажите, есть ли какая нибудь возможность получать доступ на запись к свойствам объекта по его имени ??? То есть хочется в базе хранить в формате ID|Name|Value Заранее спасибо
Re: C# Доступ к свойствам обекта по имени
От: DmitryMS  
Дата: 08.05.07 14:04
Оценка:
See reflection, object.GetType().GetProperty("PropertyName")/object.GetType().SetProperty(instance, "PropertyName");
Re[2]: C# Доступ к свойствам обекта по имени
От: Roamer_KDN Россия  
Дата: 08.05.07 14:27
Оценка:
Здравствуйте, DmitryMS, Вы писали:

DMS>See reflection, object.GetType().GetProperty("PropertyName")/object.GetType().SetProperty(instance, "PropertyName");


Спасибо за совет, GetProperty() работает, а вот SetProperty() он говорит что не знает, и в MSDN в этом толком ни чего не написано... подскажете, пожалуйста, как до SetProperty() докопаться ??? Заранее спасибо !!!
Re[3]: C# Доступ к свойствам обекта по имени
От: vitz  
Дата: 08.05.07 14:34
Оценка:
Здравствуйте, Roamer_KDN, Вы писали:

R_K>Здравствуйте, DmitryMS, Вы писали:


DMS>>See reflection, object.GetType().GetProperty("PropertyName")/object.GetType().SetProperty(instance, "PropertyName");


R_K>Спасибо за совет, GetProperty() работает, а вот SetProperty() он говорит что не знает, и в MSDN в этом толком ни чего не написано... подскажете, пожалуйста, как до SetProperty() докопаться ??? Заранее спасибо !!!


прально потомучта его и нет (у Type) человек суток погарячился

public PropertyInfo GetProperty (
string name
)

Вот с PropertyInfo и работай
Re[3]: C# Доступ к свойствам обекта по имени
От: Аноним  
Дата: 08.05.07 14:34
Оценка:
DMS>>See reflection, object.GetType().GetProperty("PropertyName")/object.GetType().SetProperty(instance, "PropertyName");

Ну что чушь-то советуете?

R_K>Спасибо за совет, GetProperty() работает, а вот SetProperty() он говорит что не знает, и в MSDN в этом толком ни чего не написано... подскажете, пожалуйста, как до SetProperty() докопаться ??? Заранее спасибо !!!


Вам немного неправильно подсказали. Метод GetProperty() вернёт не значение свойства, а объект описывающий свойство. У этого объекта нужно дёргать SetValue()/GetValue().
Re[4]: C# Доступ к свойствам обекта по имени
От: Roamer_KDN Россия  
Дата: 08.05.07 14:39
Оценка:
Здравствуйте, vitz, Вы писали:

V>Здравствуйте, Roamer_KDN, Вы писали:


R_K>>Здравствуйте, DmitryMS, Вы писали:


DMS>>>See reflection, object.GetType().GetProperty("PropertyName")/object.GetType().SetProperty(instance, "PropertyName");


R_K>>Спасибо за совет, GetProperty() работает, а вот SetProperty() он говорит что не знает, и в MSDN в этом толком ни чего не написано... подскажете, пожалуйста, как до SetProperty() докопаться ??? Заранее спасибо !!!


V>прально потомучта его и нет (у Type) человек суток погарячился

V>

V>public PropertyInfo GetProperty (
V> string name
V>)

V>Вот с PropertyInfo и работай

PropertyInfo (так же как FieldInfo, MethodInfo и т.п.) просматриваю уже несколько часов... но на Set так и не наткнулся... подскажите плз. где копать... спасибо
Re[5]: C# Доступ к свойствам обекта по имени
От: Аноним  
Дата: 08.05.07 14:45
Оценка:
R_K>PropertyInfo (так же как FieldInfo, MethodInfo и т.п.) просматриваю уже несколько часов... но на Set так и не наткнулся...

Для начала стоит повернуться к монитору лицом. Потом смотреть здесь — PropertyInfo.SetValue()?
Re[6]: C# Доступ к свойствам обекта по имени
От: vitz  
Дата: 08.05.07 14:50
Оценка:
Здравствуйте, Аноним, Вы писали:

R_K>>PropertyInfo (так же как FieldInfo, MethodInfo и т.п.) просматриваю уже несколько часов... но на Set так и не наткнулся...


А>Для начала стоит повернуться к монитору лицом. Потом смотреть здесь — PropertyInfo.SetValue()?

Не был бы уважаемый Анонимом влепил бы ПЯЦЬ, браво!!!
Re[4]: C# Доступ к свойствам обекта по имени
От: Roamer_KDN Россия  
Дата: 08.05.07 15:06
Оценка:
Здравствуйте, Аноним, Вы писали:

DMS>>>See reflection, object.GetType().GetProperty("PropertyName")/object.GetType().SetProperty(instance, "PropertyName");


А>Ну что чушь-то советуете?


R_K>>Спасибо за совет, GetProperty() работает, а вот SetProperty() он говорит что не знает, и в MSDN в этом толком ни чего не написано... подскажете, пожалуйста, как до SetProperty() докопаться ??? Заранее спасибо !!!


А>Вам немного неправильно подсказали. Метод GetProperty() вернёт не значение свойства, а объект описывающий свойство. У этого объекта нужно дёргать SetValue()/GetValue().


Спасибо, помогло, правда ArgumentException пишет, но это в MSDN кажется есть...
Re[2]: C# Доступ к свойствам обекта по имени
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.05.07 10:51
Оценка:
Здравствуйте, DmitryMS, Вы писали:

Если речь о компонентах, то лучше пользоваться TypeDescriptor.GetProperties().
... << RSDN@Home 1.2.0 alpha rev. 675>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.