![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
interv |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 24.1.2012 Репутация: нет Всего: 4 |
Допустим есть класс
допустим есть строка "string b" которая может быть "p1", "p2", "p3" или какая-то нестандартная как мне получить значение свойства экземпляра класса "A"в виде object, зная строку "b" пример:
Это сообщение отредактировал(а) interv - 15.8.2012, 08:25 |
||||
|
|||||
IBS |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 214 Регистрация: 29.7.2008 Где: Белоруссия Репутация: 1 Всего: 6 |
Не, так не получится. Но можно для таких целей использовать Dictionary
|
|||
|
||||
interv |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 24.1.2012 Репутация: нет Всего: 4 |
Не вариант, надо получать по имяни значения не иначе.
|
|||
|
||||
IBS |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 214 Регистрация: 29.7.2008 Где: Белоруссия Репутация: 1 Всего: 6 |
Ну тока так) А вообще интересно где такое может понадобиться? можно пример поконкретнее, вдруг варианты получше есть? |
|||
|
||||
interv |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 24.1.2012 Репутация: нет Всего: 4 |
ок. Есть объект со свойствами, его трогать низя.
Есть форма в ней есть некоторая функция PrepareControls.
Она заполняет данные на форме в контролы беря значения из объекта m_object. и да, вы правы строчка tb.Text = m_object.GetType().GetField(m_Controls[i].property).GetValue(m_object).ToString(); выдает ошибку еще забыл, несколько форм наследуются от текущей и обрабатывают данные свойств объектов наследующихся от PCL_Object Это сообщение отредактировал(а) interv - 14.8.2012, 12:19 |
|||
|
||||
IBS |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 214 Регистрация: 29.7.2008 Где: Белоруссия Репутация: 1 Всего: 6 |
В студии не проверял, но должно работать:
Это сообщение отредактировал(а) IBS - 14.8.2012, 13:16 |
|||
|
||||
interv |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 24.1.2012 Репутация: нет Всего: 4 |
Не совсем подходит, у меня в корневом классе, который наследуется от window есть 2-3 метода в которых обрабатывается список контролов, но список этот заполняеться у наследников, поэтому Switch не подойдет т.к. корневой класс изначально не знает список контролов для обработки. Делается это для уменьшение копипаста кода в проекте, т.к. наследников будет немерено.
Вот пример методов в корневом классе protected void PrepareControls(); //Заполняет контролы значением из объекта PCL_Object protected void ApplyControl(); // Проверяет соответствие значений в объекте и контроле, при их различии делает UPDATE в бд protected void OkControl(); // Тоже что и Apply только закрывает форму protected void onChange(); // Обработчик для контролов у которых есть соответствие с полями объекта PCL_Object Как видите мне необходимо создавать немерено наследников формы для обработки немереного количества наследников PCL_Object В каждой форме писать заполнение, проверки, обработчики это жесть, темболее их потом править... Вместо этого я заполняю в наследниках формы protected List<ControlLinkDB> m_Controls = new List<ControlLinkDB>(); а функция PrepareControls() ставит значения из объектов на форму Насколько я понимаю есть только один выход - писать абстрактный метод public object getProperty(string nameProperty) у класса PCL_Object, который переопределять в классах наследника... Это сообщение отредактировал(а) interv - 15.8.2012, 07:43 |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
interv |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 24.1.2012 Репутация: нет Всего: 4 |
А вот фиг знает че я так тупанул )
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |