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