Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Serginio1, Вы писали:
S>> Кроме того организован он как в Delphi ссылка в VMT с отрицательным смещением(по поводу C++ был спор и ответ получил что не определено) S>>и по сути все его методы можно считать статическими виртуальными. S>>Метаклассы несут ту же нагрузку только расширяемы.
VD>Очень советую не говорить о том, о чем имешь поверхностное представление. Если действительно интересно как устроена рантайм-информация о типах в дотнет ищи в гугле по словам metod table, fjit.
Это просто реализация. Сам Type это синглтон ассоциированный с классом, ничем не отличающийся от понятия метаклассов. Теже переопределения виртуальных методов.
и солнце б утром не вставало, когда бы не было меня
Есть class A и B,C от него.
1) Если надо узнать какой тип у существующей объекта, то можно использовать virtual функцию.
2) static подразумевает возможное отсутствие объекта данного типа ...
нет объекта для чего virtual ?
вызывая static — Вы сами должны указать class A,B,C
Здравствуйте, Serginio1, Вы писали:
S> А смысл его держать. По затратам получается как физическим так и скорости выполнения программы, что новый объект создать проще.
При 10 млн. вызовов? Мягко говоря не уверен.
S>А с дельфевой реализацией это можно сделать, только не знаю еще как.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>> А смысл его держать. По затратам получается как физическим так и скорости выполнения программы, что новый объект создать проще.
AVK>При 10 млн. вызовов? Мягко говоря не уверен.
10 млн. вызовов около одной сек это на Net это если держать ссылку на них, на Native значительно меньше и если не держать ссылок то GC справляется на ура. На рефлексию уйдет значительно больше. На доступ к откэшируемым объетам то же самое получается.
S>>А с дельфевой реализацией это можно сделать, только не знаю еще как.
AVK>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> Вы можете кричать здесь хоть до ночи, а мне не хватает виртуальных переменных классов. S>И что бы вызов не через атрибуты, рефлексии итд.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>> Вы можете кричать здесь хоть до ночи, а мне не хватает виртуальных переменных классов. S>>И что бы вызов не через атрибуты, рефлексии итд.
AVK>И для чего ты написал это сообщение?
Да на самом деле флуд в ветке разошелся. Просто с точки зрения ООП метаклассы и реализуемые через них виртуальные статические методы и переменные нормальное явление, т.к. полиморфизм возможен не только для экземпляров класса, но и для самих классов. Так есть данные и методы относящиеся только к классу а не к объекту, и их разграничение было бы только полезным. А говорить, что это не нужно потому что есть эти же аналоги метаклассов но в другом обличие (атрибуты, Type), устал слушать.
Посмотрим время покажет.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>>> Вы можете кричать здесь хоть до ночи, а мне не хватает виртуальных переменных классов. S>>>И что бы вызов не через атрибуты, рефлексии итд.
AVK>>И для чего ты написал это сообщение? S> Да на самом деле флуд в ветке разошелся. Просто с точки зрения ООП метаклассы и реализуемые через них виртуальные статические методы и переменные нормальное явление, т.к. полиморфизм возможен не только для экземпляров класса, но и для самих классов. Так есть данные и методы относящиеся только к классу а не к объекту, и их разграничение было бы только полезным. А говорить, что это не нужно потому что есть эти же аналоги метаклассов но в другом обличие (атрибуты, Type), устал слушать. S> Посмотрим время покажет.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>>>> Вы можете кричать здесь хоть до ночи, а мне не хватает виртуальных переменных классов. S>>>>И что бы вызов не через атрибуты, рефлексии итд.
AVK>>>И для чего ты написал это сообщение? S>> Да на самом деле флуд в ветке разошелся. Просто с точки зрения ООП метаклассы и реализуемые через них виртуальные статические методы и переменные нормальное явление, т.к. полиморфизм возможен не только для экземпляров класса, но и для самих классов. Так есть данные и методы относящиеся только к классу а не к объекту, и их разграничение было бы только полезным. А говорить, что это не нужно потому что есть эти же аналоги метаклассов но в другом обличие (атрибуты, Type), устал слушать. S>> Посмотрим время покажет.
AVK>На заданный вопрос ты так и не ответил
Вроде все онятно написано. А если и этого не достаточно то
Вспомнил песню, оценил содержимое и написал.
В песне звучали слова "Вы можете кричать здесь хоть до ночи, а пленку я давно истратил всю"
и солнце б утром не вставало, когда бы не было меня
M>>По части workaround они в Delphi хорошо поработали. Я где-то полгода назад читал, что там наворотили. Очень прикольно, ловкачи просто.
VD>Хакреы. Ну, да их понять можно. Все это для совместимости с кодом написанным под старые версии дельфи. Со временем уйдет в небытие.
Да, именно для совместимости. И какой-то неплохой прогресс у них в этом деле есть. Delphi.NET это не просто адаптирование Паскаля под .NET, там многие казусы-несовместимости аккуратно зализаны.
К примеру, используя контролы WinForms, они ухитряются достаточно ловко маскироваться — значительная часть свойств и методов VCL работают. Для этого изобретена парадигма классов-хелперов. Такое себе расширение на уровне языка. Напоминает по духу IExtenderProvider, но встроенное в сам язык.
Может, вам в R# такое подумать? Забавная вещь
M>>Жаль, что это теперь мало кому нужно.
VD>Почему жаль?
Как говорится, из эстетических побуждений. Жалко, красота пропадает.
AVK>>При 10 млн. вызовов? Мягко говоря не уверен. S> 10 млн. вызовов около одной сек это на Net это если держать ссылку на них, на Native значительно меньше и если не держать ссылок то GC справляется на ура. На рефлексию уйдет значительно больше. На доступ к откэшируемым объетам то же самое получается.
Здравствуйте, mihailik, Вы писали:
AVK>>>При 10 млн. вызовов? Мягко говоря не уверен. S>> 10 млн. вызовов около одной сек это на Net это если держать ссылку на них, на Native значительно меньше и если не держать ссылок то GC справляется на ура. На рефлексию уйдет значительно больше. На доступ к откэшируемым объетам то же самое получается.
M>Клинический случай, хоть студентов приводи
Ты о чем????
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Igor Trofimov, Вы писали:
iT>В решении указанных задачек. AVK уже отказался.
Решение я тебе привел. Короче в трое получилось.
iT>Читаем выше. Информация, возвращаемая GetType слишком общая.
Чем же это? Вся информация о типе за исключением кода методов.
iT> И я хочу получать информацию о типе от ссылки на тип, а не от экземпляра.
В дотнете, ссылка на тип и есть информация о типе. Чтобы ее плучить можно вызвать typeof(), но это уже компайл-тайм функция.
VD>>2. Динамическое создание экземпляра объекта. Это решается Activator-ом. iT>Ни слова не было про то, что нужно создавать эзкемпляр. Задачки не про это.
А зачем тогда вообще вам эти мета-лассы? Чтобы получить доступ к информации о типх через одно место?
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Serginio1, Вы писали:
S> Это просто реализация. Сам Type это синглтон ассоциированный с классом, ничем не отличающийся от понятия метаклассов. Теже переопределения виртуальных методов.
Type — это ОО-обертка над системной информацией, т.е. над метаданными. И зачем ей какие-то виртаельные методы не ясно.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Igor Trofimov, Вы писали:
VD>>Привыкли все делать одним путем напоминающим русское достижение в области удалния кланд и считаете что других путей нет: VD>>
VD>>Type type = dataSetCastToObject.GetType();
VD>>Console.WriteLine(type.Name);
VD>>
iT>Задачка не решена. Продолжаем развлекаться.
Задачка решана. Завязываем.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, s.ts, Вы писали:
ST>визитор работает с инстанциями и не накладывает ограничений на отношения объектов (имеется ввиду контроль того, что объекты из одной ветки иерархии классов). ST>мне это все больше напоминает абстрактную фабрику.
Подходы разные бывают.
ST>кстати, вопрос о виртуальном конструкторе не ввергает всех в шок?
Меня нет. Даже не оборот.
ST>а ведь он [конструктор] тоже в некотором смысле статический метод.
Ну, это ты глупость сморозил. Конструктор в языках вроде С++/C# самый что нинаесть обычный метод. Получает неявный this и позволяет вызывать методы экземпляра.
Не прийми за наезд, но сдается мне, что все же кроме Дельфи ты все же не изучил как следует других языков. Уж больно твои суждения всегда не нее сваливаются.
ST>p.s. вопрос тут более абстрактен, чем дельфи vs... также долго можно спорить о том, как должны виртуальные функции из конструктора вызываться или о чем-то другом и это уже не будет delphi vs...
Я не очень понимаю как связаны эти вопросы. Но четко вижу, что сам вопрос вам до лампочки. Вам просто не нравится, что сделано не так как в Дельфи.
ST>на всякий случай повторюсь, что меня интересовала возможность реализации схожей функциональности в дотнете, а не споры о "нужно/не нужно"
Еще раз повторю, если бы тебя это интересовало бы, то ты бы обяснил каких целей хочешь добиться, а не искал бы экзотических фич дельфи в совершенно другом по иделологии продукте.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.