Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Thypson
21 / 21 / 19
Регистрация: 10.09.2013
Сообщений: 285
1

Обращение к методу дочернего класса из экземпляра родительского класса

05.11.2017, 22:44. Просмотров 845. Ответов 1
Метки нет (Все метки)

Как обратиться к методу дочернего класса из экземпляра родительского класса?
К примеру здесь как обратиться к Method, Translate
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
static void Main(string[] args)
        {
            General[] gn = new General[2];
            gn[0] = new Daughter1();
            gn[1] = new Daughter2();
            Console.ReadLine();
        }
class Daughter1: General
    {
        public int _x;
        public void Translate()
        {
            
        }
    }
class Daughter2:General
    {
        public int _y;
        public void Method()
        {
 
        }
    }
Знаю что можно с DownCast:
C#
1
2
Daughter1 dt1 = (Daughter1)gn[0].Translate();
Daughter2 dt2 = (Daughter2)gn[1].Method();
А как обойтись без него?
И вопрос номер два, как в базовом классе узнать имя дочернего класса из которого он вызван?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2017, 22:44
Ответы с готовыми решениями:

Создать экземпляр метода класса или доступ к методу из экземпляра класса
Всем доброго времени суток!) Уже месяца как 2 не сишарпил и подзабыл...собственно задача такая:...

Доступ к полям дочернего класса из родительского
Вопрос это нормально что this.GetType() Возвращает тип дочернего класса а не родительского? А...

ООП. Обращение к свойству дочернего класса через базовый абстрактный
Всем привет, появился у меня такой вопрос Есть у меня абстрактный класс Animal у которого есть 2...

Как из метода производного класса вызвать поле родительского класса
Добрый день! Помогите пожалуйста вызвать поле базового класса из метода производного класса. Код,...

Создание экземпляра класса-наследника для переменной с типом базового класса
Подскажите чайнику как создается экземпляр класса BC BaseClass BC = new DerivedClass(); ...

1
Wolfdp
896 / 801 / 207
Регистрация: 15.06.2012
Сообщений: 3,168
Записей в блоге: 1
Завершенные тесты: 1
06.11.2017, 05:52 2
вообще нечто гениально, но раз очень хочется...
Цитата Сообщение от Thypson Посмотреть сообщение
Как обратиться к методу дочернего класса из экземпляра родительского класса?
C#
1
(gn[0] as Daughter1)?.Translate()
Даный код гарантирует вызов, если в элементе таки нужный класс, и не даст exception если там что-то другое или вообще null. Без (не)прямого каста можно разве что через dynamic, ну или рефлексию.

Цитата Сообщение от Thypson Посмотреть сообщение
как в базовом классе узнать имя дочернего класса из которого он вызван?
Чуть не правильно мыслишь. Обьект имеет метод, и вызов происход по сути в нем (опустим пока static/base). Т.е. по сути не дочерний вызывает родительский, а метод работает внутри обьекта, который являтся General и Daughter одновременно. Думаю this.GetType() вернет тебе нужную инфу (msdn в помощь, как с ним работать).
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2017, 05:52

Список дочернего класса привести к списку базового класса
Детский вопрос, но все же. есть классы: class Base { public string str = "base"; ...

Разрешить доступ к методу класса только для другого класса
Здравствуйте, нужно что бы у Item ссылка на Box была только для чтения, но при добавлении Item в...

Доступ к методу родительского класса из метода свойства родительского класса
Не знаю правильно ли написал тему, ну суть такая, есть класс который описывает допустим шарик, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru