Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
09.11.2013, 22:09
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
Вот такая задачка. Класс нельзя пометить, как abstract (by design), но и создавать экземпляры нужно позволить только его наследникам. Как это сделать меньшей кровью? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2013, 22:35
|
|||
---|---|---|---|
|
|||
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
hVostt, конструктор, который можно увидеть из наследника, но нельзя видеть снаружи..не ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2013, 23:13
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
Где-то в степиhVostt, конструктор, который можно увидеть из наследника, но нельзя видеть снаружи..не protected ctor? активатором тоже нельзя создать? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2013, 23:21
|
|||
---|---|---|---|
|
|||
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
hVostt, Да нет, в ативаторе в любом случае, алокаци будет через new, а там за ней конструктор ( если видимый) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2013, 23:22
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
Где-то в степиhVostt, Да нет, в ативаторе в любом случае, алокаци будет через new, а там за ней конструктор ( если видимый) ну тогда спасибо! вопрос закрыт ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2013, 23:23
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
hVosttактиватором тоже нельзя создать? все замки - защищают только от честных людей ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2013, 23:27
|
|||
---|---|---|---|
|
|||
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
хотя стоит поэкспериментировать, может там какие ошметки застревают в куче,.. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2013, 23:33
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
Изопропилвсе замки - защищают только от честных людей просто наличие экземпляра базового объекта потенциально может серьёзно повредить работе системы. но и абстрактным класс тоже нельзя сделать, незнаю встречалось ли кому-нибудь подобная задача. речь идёт не о синглетоне. Где-то в степихотя стоит поэкспериментировать, может там какие ошметки застревают в куче,.. в смысле какие ошмётки, от чего? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2013, 23:45
|
|||
---|---|---|---|
|
|||
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
hVostt, я не смотрел кишки, но если предположить что идет выделение памяти а потом попытка вызова конструктора, который не доступен, в итоге получаем обьект на удаление в куче. но скорее всего идет проверка на доступность конструктора, а потом выделение ( было бы жирно разбрасываться) есть такие ситуации, когда пример Foo foo=new Foo(); в конструкторе ошибка, хоть и мы ее словим, и наружу нам не выкинет указатель на созданный обобьет, но объект хоть и не доделанный, останется в куче на удаление фантомом ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2013, 23:54
|
|||
---|---|---|---|
|
|||
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
ну это как бы мысли в слух, куча чиста.. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2013, 00:05
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
hVosttГде-то в степиhVostt, конструктор, который можно увидеть из наследника, но нельзя видеть снаружи..не protected ctor? активатором тоже нельзя создать? ну активатор это крайние меры :) Можно создать объект вообще без конструктора, есть магический класс (забыл название). Так что это все защита от честных людей)) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2013, 00:05
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
Где-то в степи, а вот о чем речь. не думаю, что такая проблема имеет место быть )) т.е. если там какой-то мусор в памяти остаётся после неудачной операции, беспокоиться ненужно. другое дело продолжать хранить ссылки на убитые объекты. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2013, 00:24
|
|||
---|---|---|---|
|
|||
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
hVostt, ну как бы мусор это деликатная тема, вот тут один хлопец делал мега вычисления в конструкторе заполнял поля разными листами и всего прочее, вот предположим у него возникло исключение на последнем этапе, что это значит, - ссылка на объект не выкинется, обьект перейдет на удаление и до коллектора будет лежать в куче со всеми гирляндами в виде указателей на безразмерные массивы и тд, мало того все это разбухание шло медленно - через базу, то есть объект создавался медленно, память жралась что там делал коллектор я не знаю что бы освободить для такой своры память, и все в конце нахер, ну предположим он словил удачно исключение в самом начале конструктора что имеем, не доделанный объект которым пользоваться нельзя...., пытались обьяснить что плохо, а он только на чтение зациклился.. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2013, 00:26
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
hVosttкак abstract (by design), но и создавать экземпляры нужно позволить только его наследникам. что за design такой? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2013, 00:30
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
netivanесть магический класс (забыл название) Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2013, 02:54
|
|||
---|---|---|---|
|
|||
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
А нельзя, к примеру, в конструкторе выполнять проверку вида Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2013, 11:03
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
описание самой изачальной задачи бы увидеть ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2013, 14:47
|
|||
---|---|---|---|
Запретить создание экземпляров базового не абстрактного класса |
|||
#18+
Изопропилчто за design такой? EF Code First. базовый класс и его наследники хранятся в отдельных таблицах. One-To-One Relation. Если сделать базовый класс абстрактным, EF генерирует очень неэффективный SQL-код (абсолютно при любом запросе джойнит все таблицы наследников, и это логично). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=20&mobile=1&tid=1403714]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 328ms |
total: | 504ms |
0 / 0 |