![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: нет Всего: 18 |
Скажем так, объект А находится в библиотеке, не известной до момента выполнения приложения. Может ли объект В, быть наследован от объекта А?
|
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
Rohoss, наследуются не объекты, а классы....
по САБЖу, наверно можно поиграться с динамической генерацией классов.. -------------------- СУВ, Partizan. |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Да, динамическая генерация, думаю, единственный способ. Просто непонятно Rohoss, каков конечный смысл такой операции? Что даст наследование? Проясни пожалуйста.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
-Mikle-, можно подсовывать B вместо A, например, в целях тестирования.
Rohoss, погугли Rhino Mocks или moq. |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Разве это не касается только .NET remoting? Там так можно было делать. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
-Mikle-, не обязательно remoting - это же обычное наследование.
|
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Я так понял, что нужно не обычное:
Ему нужно наследоваться во время выполнения от А. Причем не ясно зачем такое нужно вообще и каков смысл в классе B, если этот класс заранее не знает, что он будет перегружать или не перегружать. Remoting позволяет (через ж..у и не документированно естественно) подменить один из базовых типов? например object на MyObject, но это только ради "поиграться", реально я бы не стал этого делать. Думаю человеку нужно использовать "Композицию" и "Делегирование" (при необходимости) в качестве решения своей задачи. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
-Mikle-, мало ли какие странные задачи могут придти в голову топикастеру. Навскидку - он может заменить все типы из сборки XXX в IoC-контейнере на такие вот "наследники" и обеспечить логгирование или какой-нибудь exception shielding. Типа - хочу чтобы все исключения, бросаемые классами MyFramework.Data.*... оборачивались в DataLayerException с дампом всех параметров. Причем без изменения кода MyFramework.Data.*. Не совсем наследование, скорее реализация тех же интерфейсов/прокси, но средства для достижения - те же.
|
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Хорошо, задача имеет определенный смысл, но разве прокси-подобные вещи делаются не путем динамической компиляции? Мне другого и в голову не приходит.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
-Mikle-, ес-но с помощью динамической компиляции. но это не значит что нужно с нуля писать реализацию
|
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Ну в общем-то я нигде вроде и не говорил что с нуля.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: нет Всего: 18 |
||||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Чисто теоретически, такая возможность есть в некоторых других языках. В частности в javascript предков можно менять динамически, и кстати, там как раз наследуется именно объект и куча других "странностей" присутствует. Приведу пример
Здесь у меня два класса - предка(base1 и base2) и один пустой класс-потомок(child). На страничке две кнопки с одним обработчиком. В зависимости от того, какая кнопка нажата, классу child назначается (посредством экземпляров) тот или иной родитель, после чего создаётся экземпляр класса child и у него вызывается метод, определённый в обоих родителях, но по-разному. Результат можно увидеть, если запустить пример. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |