Страница: 1 |
Страница: 1 |
Вопрос: Вопрос по ООП
Добавлено: 14.10.08 15:28
Автор вопроса: Vugar Miriyev | Web-сайт:
Как реализовать собственный класс, чтобы можно было пройтись в цикле по его свойствам?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 14.10.08 16:40
Хм... когда возникают подобные желания, это, как правило, говорит о неправильном подходе к решению задачи. Давай начнем с другого конца.. постарайся описать задачу которую ты хочешь решить таким нетрадиционным способом.
Номер ответа: 2
Автор ответа:
Vugar Miriyev
ICQ: 321950466
Вопросов: 24
Ответов: 28
Web-сайт:
Профиль | | #2
Добавлено: 14.10.08 16:48
Задача как задача и вот её реализация если интересено:
Dim oPerson As UserCl
oPerson = CurrentUser()
Dim properties As System.Reflection.PropertyInfo() = oPerson.[GetType]().GetProperties()
For Each oPropertyInfo As System.Reflection.PropertyInfo In properties
Console.WriteLine(oPropertyInfo.Name)
Next
В любом случае спасибо за желание помочь.
Номер ответа: 3
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #3
Добавлено: 14.10.08 20:40
Не согласен.. это не рядовая задача, тем более в собственном приложении. К рефлексии прибегают в случае если это не твои классы, либо к ним нету доступа (например защищенные методы класса), но насколько я понял, ты таким образом обращаешься к собственным классам, поэтому я это расцениваю как ошибку архитектуры. Более того.. рефлексия - это довольно тормозная и дорогостоящая операция и при некорректном использовании может существенно снизить производительность.
В любом случае - дело твое..
Номер ответа: 4
Автор ответа:
Vugar Miriyev
ICQ: 321950466
Вопросов: 24
Ответов: 28
Web-сайт:
Профиль | | #4
Добавлено: 14.10.08 21:32
Информация для размышления, Спасибо еще раз.
Номер ответа: 5
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #5
Добавлено: 18.10.08 03:23
Получение метаданных - не слишком дорогостоящая операция.
С другой стороны, сценарий действительно нестандартный, пока что приходит в голову - некий OR-преобразователь... Хотя я бы все же в OR использовал кодогенерацию.
2 EROS - как раз через эту штуку (точнее через DataBinder.Eval, хотя "под капотом" у него именно то же самое) работает датабиндинг в ASP .NET, так чтоб не такая уж это и плохая штука
Номер ответа: 6
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #6
Добавлено: 21.10.08 01:55
что мешает использовать NameValueCollection ???
Номер ответа: 7
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #7
Добавлено: 28.10.08 01:25
Здесь более эфективно будет даже не NameValueCollection а Dictionary(Of String, Object)