static virtual
От: s.ts  
Дата: 26.02.04 16:32
Оценка:
как можно попроще реализовать статические виртуальные методы для класса (не городя фабрик и т.п.) на С# ?
поделитесь плз. у кого какие идеи по этому поводу ?

вообще как это должно выглядеть по-нормальному ?

04.03.04 20:06: Перенесено модератором из '.NET' — TK
Re: static virtual
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.02.04 16:46
Оценка: :))
Здравствуйте, s.ts, Вы писали:

ST>как можно попроще реализовать статические виртуальные методы для класса (не городя фабрик и т.п.) на С# ?

ST>поделитесь плз. у кого какие идеи по этому поводу ?

ST>вообще как это должно выглядеть по-нормальному ?

Они уже реализованы в Delphi через метаклассы.
http://www.rsdn.ru/Forum/Message.aspx?mid=548308&only=1
Автор: Serginio1
Дата: 24.02.04

Но это фича языка.
и солнце б утром не вставало, когда бы не было меня
Re[2]: static virtual
От: Igor Trofimov  
Дата: 26.02.04 17:24
Оценка: +2
ST>>вообще как это должно выглядеть по-нормальному ?
S> Они уже реализованы в Delphi через метаклассы.
S> Но это фича языка.

Кстати, уже несколько раз с огорчением обнаруживал, что этой замечательной вещи мне после Delphi в шарпе не хватает ;(
Re[3]: static virtual
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.02.04 17:30
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

ST>>>вообще как это должно выглядеть по-нормальному ?

S>> Они уже реализованы в Delphi через метаклассы.
S>> Но это фича языка.

iT>Кстати, уже несколько раз с огорчением обнаруживал, что этой замечательной вещи мне после Delphi в шарпе не хватает ;(

Теперь есть. Завтра до работы попробую разобраться с Implements
и солнце б утром не вставало, когда бы не было меня
Re[4]: static virtual
От: Igor Trofimov  
Дата: 26.02.04 18:13
Оценка:
iT>>Кстати, уже несколько раз с огорчением обнаруживал, что этой замечательной вещи мне после Delphi в шарпе не хватает ;(
S> Теперь есть. Завтра до работы попробую разобраться с Implements

Ась? В шарпе? хде?
Re: static virtual
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.02.04 18:36
Оценка: +1
Здравствуйте, s.ts, Вы писали:

ST>как можно попроще реализовать статические виртуальные методы для класса (не городя фабрик и т.п.) на С# ?

ST>поделитесь плз. у кого какие идеи по этому поводу ?

ST>вообще как это должно выглядеть по-нормальному ?


Зачем?
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: static virtual
От: s.ts  
Дата: 27.02.04 10:13
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, s.ts, Вы писали:


ST>>как можно попроще реализовать статические виртуальные методы для класса (не городя фабрик и т.п.) на С# ?

ST>>поделитесь плз. у кого какие идеи по этому поводу ?

ST>>вообще как это должно выглядеть по-нормальному ?

S> Они уже реализованы в Delphi через метаклассы.
S>http://www.rsdn.ru/Forum/Message.aspx?mid=548308&amp;only=1
Автор: Serginio1
Дата: 24.02.04

S> Но это фича языка.

виртуальные статические методы видимо не имеют смысла без метаклассов (тпа фабрик, что ли)

вот и вопрос как это реализовать попроще

и какие у этого перспективы
Re[4]: static virtual
От: s.ts  
Дата: 27.02.04 10:14
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Igor Trofimov, Вы писали:


ST>>>>вообще как это должно выглядеть по-нормальному ?

S>>> Они уже реализованы в Delphi через метаклассы.
S>>> Но это фича языка.

iT>>Кстати, уже несколько раз с огорчением обнаруживал, что этой замечательной вещи мне после Delphi в шарпе не хватает ;(

S> Теперь есть. Завтра до работы попробую разобраться с Implements

что есть "Implements" ?
где смотреть ?
Re[3]: static virtual
От: Igor Trofimov  
Дата: 27.02.04 10:33
Оценка: 1 (1) +1
ST>виртуальные статические методы видимо не имеют смысла без метаклассов (тпа фабрик, что ли)

Ну, есть же RuntimeType, вот могли бы при инициализации типа делать singleton-потомок от него, описывающий конкретный тип. Эта штука и возвращалась бы по GetType(). Умела бы создавать экземпляры. Обеспечивала бы поддержку виртуальных (для экземпляра, соответственно — статических виртуальных) методов.

Зря не сделали такое в CLR.
Re[2]: static virtual
От: s.ts  
Дата: 27.02.04 10:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, s.ts, Вы писали:


ST>>как можно попроще реализовать статические виртуальные методы для класса (не городя фабрик и т.п.) на С# ?

ST>>поделитесь плз. у кого какие идеи по этому поводу ?

ST>>вообще как это должно выглядеть по-нормальному ?


VD>Зачем?


чтобы флейм не разводить на тему Delphi.net vs C#

меня интересует конкретные возможности языков

разумнее, конечно, использовать C#, но хотелось бы знать во что мне выльется отсутствие некоей функциональности (автогенерация фабрик классов) в С#
а может быть это появится через пол-года и там ?

поэтому и задаю вопрос
Re[4]: static virtual
От: s.ts  
Дата: 27.02.04 10:41
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

ST>>виртуальные статические методы видимо не имеют смысла без метаклассов (тпа фабрик, что ли)


iT>Ну, есть же RuntimeType, вот могли бы при инициализации типа делать singleton-потомок от него, описывающий конкретный тип. Эта штука и возвращалась бы по GetType(). Умела бы создавать экземпляры. Обеспечивала бы поддержку виртуальных (для экземпляра, соответственно — статических виртуальных) методов.


не понял.
это руководство к действию для меня или для MS ?

iT>Зря не сделали такое в CLR.


а не собираются ?
а чего сейчас-то делать ?
Re[5]: static virtual
От: Igor Trofimov  
Дата: 27.02.04 10:47
Оценка:
ST>а не собираются ?

Вроде нет ;(

ST>а чего сейчас-то делать ?


Выкручиваться как-то.
Re[6]: static virtual
От: s.ts  
Дата: 27.02.04 10:56
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

ST>>а не собираются ?


iT>Вроде нет ;(


ST>>а чего сейчас-то делать ?


iT>Выкручиваться как-то.


дык какой путь имеет минимальные издержки на кодирование ?

никто не сталкивался ?

можно шаблоны использовать (те, что будут)
Re[7]: static virtual
От: s.ts  
Дата: 27.02.04 10:58
Оценка:
Здравствуйте, s.ts, Вы писали:

ST>Здравствуйте, Igor Trofimov, Вы писали:


ST>>>а не собираются ?


iT>>Вроде нет ;(


ST>>>а чего сейчас-то делать ?


iT>>Выкручиваться как-то.


ST>дык какой путь имеет минимальные издержки на кодирование ?


ST>никто не сталкивался ?


ST>можно шаблоны использовать (те, что будут)


кстати, там чего-нибудь типа макросов не предвидится ?
то можно было бы изврат c rtii по типу mfc устроить ?
Re[8]: static virtual
От: Igor Trofimov  
Дата: 27.02.04 11:01
Оценка:
ST>кстати, там чего-нибудь типа макросов не предвидится ?
ST>то можно было бы изврат c rtii по типу mfc устроить ?

Извратов — лучше не надо.
Лучше без метаклассов — но не портить язык.
Re[5]: static virtual
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.02.04 11:01
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

iT>>>Кстати, уже несколько раз с огорчением обнаруживал, что этой замечательной вещи мне после Delphi в шарпе не хватает ;(

S>> Теперь есть. Завтра до работы попробую разобраться с Implements

iT>Ась? В шарпе? хде?

А что нельзя Дельфевые объекты в Шарпе использовать?????
Пиши классы на Delphi используй в шарпе.
и солнце б утром не вставало, когда бы не было меня
Re[3]: static virtual
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.02.04 11:06
Оценка:
Здравствуйте, s.ts, Вы писали:


ST>виртуальные статические методы видимо не имеют смысла без метаклассов (тпа фабрик, что ли)


Не совсем так. В нативном Delphi как таковых метаклассов нет. Есть VMT которая располагается в две строны с положительным смещением виртуальные методы для экземпляров типа, с отрицательным для инфрмации о типе и виртуальных методов типа (виртуальных статических)
ST>вот и вопрос как это реализовать попроще

ST>и какие у этого перспективы

А чем тебе Дельфевая реализация не нравится????
Перпективы в ненужности использования рефлексии и простота использования наследников типов.
и солнце б утром не вставало, когда бы не было меня
Re[5]: static virtual
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.02.04 11:09
Оценка:
Здравствуйте, s.ts, Вы писали:

S>> Теперь есть. Завтра до работы попробую разобраться с Implements


ST>что есть "Implements" ?

ST>где смотреть ?
Директива Implements в Delphi говорить, что за реализацию интерфейса(ов) объекта, отвечает объект являющийся полем этого класса. То есть тебе не надо реализовывать все методы интерфеса в классе.
Но чего то у меня не получилось. Хотя директива осталась.
и солнце б утром не вставало, когда бы не было меня
Re[9]: static virtual
От: s.ts  
Дата: 27.02.04 11:20
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

ST>>кстати, там чего-нибудь типа макросов не предвидится ?

ST>>то можно было бы изврат c rtii по типу mfc устроить ?

iT>Извратов — лучше не надо.

iT>Лучше без метаклассов — но не портить язык.

тогда придется ждать пока MS услышит глас вопиющего в пустыне

имхо нужно не за чистоту языка бороться, а как-то решать возникающиек проблемы
а придурки, как их не ограничивай в возможностях, все равно напишут что-нибудь грустное для окружающих
Re[4]: static virtual
От: s.ts  
Дата: 27.02.04 11:24
Оценка: 21 (1)
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, s.ts, Вы писали:



ST>>виртуальные статические методы видимо не имеют смысла без метаклассов (тпа фабрик, что ли)


S> Не совсем так. В нативном Delphi как таковых метаклассов нет. Есть VMT которая располагается в две строны с положительным смещением виртуальные методы для экземпляров типа, с отрицательным для инфрмации о типе и виртуальных методов типа (виртуальных статических)

ST>>вот и вопрос как это реализовать попроще

могу добавить, типа чтобы все это еще умнее выглядело:

vmtSelfPtr = -76;
vmtIntfTable = -72;
vmtAutoTable = -68;
vmtInitTable = -64;
vmtTypeInfo = -60;
vmtFieldTable = -56;
vmtMethodTable = -52;
vmtDynamicTable = -48;
vmtClassName = -44;
vmtInstanceSize = -40;
vmtParent = -36;
vmtSafeCallException = -32 deprecated; // don't use these constants.
vmtAfterConstruction = -28 deprecated; // use VMTOFFSET in asm code instead
vmtBeforeDestruction = -24 deprecated;
vmtDispatch = -20 deprecated;
vmtDefaultHandler = -16 deprecated;
vmtNewInstance = -12 deprecated;
vmtFreeInstance = -8 deprecated;
vmtDestroy = -4 deprecated;

vmtQueryInterface = 0 deprecated;
vmtAddRef = 4 deprecated;
vmtRelease = 8 deprecated;
vmtCreateObject = 12 deprecated;


ST>>и какие у этого перспективы

S> А чем тебе Дельфевая реализация не нравится????
S> Перпективы в ненужности использования рефлексии и простота использования наследников типов.

нужна реализация для мэйнстрима (си шарп)

да и как я смогу использовать это в других языках ?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.