![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Kuvaldis |
|
||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
Ребята, всем доброго времени суток!
У меня такая проблема: объекты различных классов перетаскиваются из одного контрола в другой. При приеме события желательно (даже очень) получить из них объект базового класса, чтобы потом использовать все преимущества полиморфизма, а не кучу блоков if. Но проблема в том, что для получения объекта мне приходится использовать проверку на тип вида e.Data.GetDataPresent(typeof(InvComputer)) Соотвественно, весь полиморфизм - коту под хвост. Как выкрутиться? При посылке:
Базовый класс InvComputer, дочерний - InvComputerPE При приеме:
В общем, прошу совета ![]() -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||
|
|||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
вместо
я бы использовал конструкцию вида
насчет проверки на базовый и дочерний... Если объект совместим с InvComputerPE, то он будет совместим и с InvComputer, ведь InvComputerPE - это наследник InvComputer? Так что проверку на базовый класс делать не нужно. А насчет полиморфизма... Проверки на совместимость с тем или иным типом делать все равно нужно. И нужно указать какой из "тех или иных" ![]() Это сообщение отредактировал(а) tol05 - 11.2.2008, 12:31 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
tol05,
прав, спасибо! -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |