![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| radow |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 19.2.2008 Репутация: нет Всего: нет |
Привет всем!!!
Есть такая проблемка Есть такой класс
как выполнить такое преобразование
|
||||
|
|||||
| Ceiceron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
Я так понимаю listener.EndAcceptTcpClient(ar) возвращает TcpClient, тогда преобразовать базовый класс к наследнику не получиться. Возможно только обратное. Так что тут может помочь создание наследника по базовому классу. Например добавить еще один конструктор в наследника, который будет создавать объект наследника на основе базового класса.
|
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Ceiceron, но ведь здесь вместо наследования применяется композиция? Как созданный таким образом объект tcp получит доступ к защищенным членам объекта TcpClient? Т.е. имеем декоратор, с делегированием всех вызовов внутреннему объекту TcpClient... Не знаю, это ли - то нужно автору.
-------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| Ceiceron |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
в том-то и дело, что tcp всегда будет null, особенно если использовать as.
clientClass является наследником TcpClient, он так и так будет иметь доступ к защищенным членам класса. в любом случае для инициализации clientClass потребуются только публичные свойства TcpClient. |
||||
|
|||||
| tol05 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
создайте базовый класс и его наследник. Создайте protected поле в базовом классе Передайте объект базового класса в конструктор наследника и так попытайтесь обратиться к защищенному полю.
как? возможно такое?
какой смысл в наследовании тогда? В чем его польза? Это сообщение отредактировал(а) tol05 - 29.1.2010, 16:17 -------------------- На хорошей работе и сны хорошие снятся. |
||||||
|
|||||||
| Ceiceron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
Понятное дело, что таким образом не получиться получить доступ к protected полям.
Но суть вопроса в том как получить от базового объекта экземпляр объекта-наследника. Простым приведением не получиться, соответственно нужно создавать наследник либо по базовому классу, как совершенно новый объект, либо использовать базовый тип по другому, например как поле класса обертки. Ваш вариант в as не прокатит. Предложите вариант решения вопроса. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Ceiceron, я согласен с Вами.
Единственный вариант - хранить в clientClass ссылку на TcpClient и делегировать все функции ему. Получим wrapper объекта TcpClient с некоторыми дополнительными сервисами, но и с возможностями, которыми обладает любой обычный клиент, использующий объект TcpClient. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |