static virtual
От: Фанатик Ад http://vk.com/id10256428
Дата: 26.03.10 15:01
Оценка:
Типичный пример непонимания:

ME:
ты как к идее static virtual относишься?

Comrade
бред, конечно

ME:
от чего же бред?

Comrade
потому что полиморфизм работает с экземплярами дочерних объектов так же, как работал с родительскими. а статические методы вообще к экземплярам объектов не относятся, им объект -- чисто пространство имён

Comrade
поэтому я что-то хз как сделать дочерний объект, привести его к интерфейсу родителя и вызвать статический метод

Comrade
это хрень какая-то


Раньше я писал на Delphi, и к этой фиче языка.

Вот здесь мне бы это пригодилось:

        public bool SelectAll(Type p_EntityType, List<CEntity> p_ResultList)
            {
            if (p_ResultList == null)
                {
                throw new ArgumentNullException("p_ResultList");
                }
            DbDataReader reader = DA.Select(p_EntityType, null);
            bool Result = reader.Read();
            if (Result)
                {
                int i = p_ResultList.Count;
                do
                    {
                    CKey key = p_EntityType.RetriveKey(reader); //вот в этом месте я очень хочу static virtual
                    ...
                    }
                while (reader.Read());
                }
            return Result;
            }
Всё сказанное выше — личное мнение, если не указано обратное.
Re: static virtual
От: Фанатик Ад http://vk.com/id10256428
Дата: 26.03.10 15:07
Оценка:
Интересно, как бы вы могли предложить для этого примера? Т.е. есть задача — в соответствии с переданным типом выполнить функцию.
Всё сказанное выше — личное мнение, если не указано обратное.
Re: static virtual
От: nikov США http://www.linkedin.com/in/nikov
Дата: 26.03.10 15:10
Оценка:
Здравствуйте, Фанатик, Вы писали:

Ф>
Ф>                    CKey key = p_EntityType.RetriveKey(reader); //вот в этом месте я очень хочу static virtual
Ф>


Нечто похожее на static virtual можно сделать с помощью type family в Haskell.
В C# в принципе я мог бы представить себе такую фичу: static interface, который можно указывать в качестве constraint у типа-параметра, и потом вызывать методы этого интерфейса у этого типа-параметра.
Re[2]: static virtual
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.03.10 15:41
Оценка: +4
Здравствуйте, nikov, Вы писали:

N>Нечто похожее на static virtual можно сделать с помощью type family в Haskell.

N>В C# в принципе я мог бы представить себе такую фичу: static interface, который можно указывать в качестве constraint у типа-параметра, и потом вызывать методы этого интерфейса у этого типа-параметра.

Ты не в ту степь побрел. Сразу видно с Дельфи и Смолтоком ты дела не имел.

Тут речь идет о внесении в язык паттерна фабрика классов. Как бы статические методы они рассматривают как методы мета-класса. При этом их перегрузка позволяет делать назные хитрые финты ушами. В дотнете пошли другим путем — ввели активатор.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Голосование
От: Фанатик Ад http://vk.com/id10256428
Дата: 30.03.10 13:54
Оценка:
Голосование на RSDN
Автор: Don Reba
Дата: 30.04.08


Ф>Вот здесь мне бы это пригодилось:


Ф>
Ф>        public bool SelectAll(Type p_EntityType, List<CEntity> p_ResultList)
Ф>            {
Ф>            if (p_ResultList == null)
Ф>                {
Ф>                throw new ArgumentNullException("p_ResultList");
Ф>                }
Ф>            DbDataReader reader = DA.Select(p_EntityType, null);
Ф>            bool Result = reader.Read();
Ф>            if (Result)
Ф>                {
Ф>                int i = p_ResultList.Count;
Ф>                do
Ф>                    {
Ф>                    CKey key = p_EntityType.RetriveKey(reader); //вот в этом месте я очень хочу static virtual
Ф>                    ...
Ф>                    }
Ф>                while (reader.Read());
Ф>                }
Ф>            return Result;
Ф>            }

Ф>
Всё сказанное выше — личное мнение, если не указано обратное.
static virtual метаклассы
Re[2]: Голосование, правильная ссылка
От: Фанатик Ад http://vk.com/id10256428
Дата: 30.03.10 14:00
Оценка:
http://www.rsdn.ru/poll/2549.aspx
Автор: Философ
Дата: 30.03.10
Вопрос: Тема обсуждение более-менее, не полностью, но раскрыта здесь:

Интроспекция:
http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D1%80%D0%BE%D1%81%D0%BF%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29

Ссылки на классы в Delphi: http://base.vingrad.ru/view/2767-Metaklassyi

Метаклассы в Pyton: http://www.internet-technologies.ru/articles/article_783.html

Обсуждение здесь:
[url=http://www.rsdn.ru/forum/philosophy/3750853.flat.aspx#3750853]Форум RSDN[/url]
Всё сказанное выше — личное мнение, если не указано обратное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.