tag:blogger.com,1999:blog-8596733192274108952.post5229872274178714422..comments2024-03-12T06:00:18.305+02:00Comments on Programming stuff: Закрытый конструктор базового классаSergey Teplyakovhttp://www.blogger.com/profile/14300835272589262297noreply@blogger.comBlogger15125tag:blogger.com,1999:blog-8596733192274108952.post-59563182249251535422015-03-30T11:12:29.979+03:002015-03-30T11:12:29.979+03:00hazzik, ты предложил то же, что и яhazzik, ты предложил то же, что и яМурадов Мурадhttps://www.blogger.com/profile/06611052686208052951noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-81932928625996221222015-03-02T19:16:02.614+02:002015-03-02T19:16:02.614+02:00Хороший вариант:))
"unions" в .NET-е - э...Хороший вариант:))<br />"unions" в .NET-е - это ящик Пандоры какой-то:)Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-29606963234356670142015-03-02T19:14:18.215+02:002015-03-02T19:14:18.215+02:00Таски прикручены, чтобы показать немоментальность ...Таски прикручены, чтобы показать немоментальность процесса создания. GC триггерится руками, но все равно две сборки мусора пережить - это процесс не мгновенный.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-52095450485610187442015-03-02T09:28:46.444+02:002015-03-02T09:28:46.444+02:00Этот комментарий был удален автором.hazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-31601530607209711732015-03-02T09:27:16.245+02:002015-03-02T09:27:16.245+02:00Этот комментарий был удален автором.hazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-75356044711829216572015-03-02T09:16:27.831+02:002015-03-02T09:16:27.831+02:00А зачем во втором примере с трюком таски прикручен...А зачем во втором примере с трюком таски прикручены? Они как-то сказываются на рабочести трюка с бросанием исключения?Anonymoushttps://www.blogger.com/profile/11725153141467656623noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-59794606307438807732015-03-02T09:15:25.171+02:002015-03-02T09:15:25.171+02:00Впрочем, нам даже не нужно знать точное устройство...Впрочем, нам даже не нужно знать точное устройство класса в памяти. Достаточно знать максимальный размер класса <i>Derived</i>. Обновил гист.Anonymoushttps://www.blogger.com/profile/17382262296650100514noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-37159761713686802112015-03-02T09:07:14.361+02:002015-03-02T09:07:14.361+02:00В спеке шарпа вложенные классы называются не inner...В спеке шарпа вложенные классы называются не inner, а nested https://msdn.microsoft.com/en-us/library/ms173120.aspxAnonymoushttps://www.blogger.com/profile/11725153141467656623noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-23872497965537103802015-03-02T09:07:04.264+02:002015-03-02T09:07:04.264+02:00Есть ещё один вариант: если мы знаем как выглядит ...Есть ещё один вариант: если мы знаем как выглядит внутри базовый класс, то мы можем создать его «публичного двойника», которого бы мы могли создать, а потом просто подменили бы ссылку на тип. Вот рабочий код: <a href="https://gist.github.com/AndreyAkinshin/95ebe7ce5b964fc6930c" rel="nofollow">https://gist.github.com/AndreyAkinshin/95ebe7ce5b964fc6930c</a>Anonymoushttps://www.blogger.com/profile/17382262296650100514noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-87548900586726020852015-03-02T08:51:09.098+02:002015-03-02T08:51:09.098+02:00Могу предложить совсем хардкорный путь: в теории м...Могу предложить совсем хардкорный путь: в теории можно руками в памяти создать нужный класс. Скажем, можно взять созданный <i>Dervied</i> класс с двумя конструкторами из начала второго способа, а потом самостоятельно добраться до таблицы методов и исправить проблему. Правда, для этого нам нужен FullyTrusted-домен.Anonymoushttps://www.blogger.com/profile/17382262296650100514noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-50057892628239190532015-03-02T08:43:33.426+02:002015-03-02T08:43:33.426+02:00Я Мураду вообще-то отвечал.Я Мураду вообще-то отвечал.hazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-3732847643477263222015-03-02T08:31:25.468+02:002015-03-02T08:31:25.468+02:00Я в предыдущем комментарии уже выразил свою мысль:...Я в предыдущем комментарии уже выразил свою мысль: этот вопрос, как и многие вопросы по особенностями синтаксиса языка, не направлены на практическое использование возможности в продакшне. Это скорее вопросы на знание особенностей синтаксиса и каких-то очень необычных возможностей.<br /><br />Еще раз: первый случай - вполне валидный сценарий. Он позволяет разработчику базового класса и иерархии наследования легко изменять реализацию. Скрывать иерархию наследовани может быть полезным в случае библиотеки, когда ее разработчик хочет спрятать конкретный класс от клиентов.<br /><br />Ну а второй случай - это просто тотальный хак.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-12923936577818852482015-03-02T08:23:31.713+02:002015-03-02T08:23:31.713+02:00Создать вложенный класс можно только, если есть до...Создать вложенный класс можно только, если есть доступ к исходному коду, а если есть доступ к исходному коду, то ничего не мешает просто повысить видимостьhazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-35465969826789066492015-03-02T08:18:33.907+02:002015-03-02T08:18:33.907+02:00Первый случай - вполне валидный сценарий, который ...Первый случай - вполне валидный сценарий, который позволяет очень жестко контролировать наследников.<br /><br />Ну а второй случай - это же полнейший brain teaser. Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-65579386933093041242015-03-02T08:07:12.283+02:002015-03-02T08:07:12.283+02:00Если есть возможность сделать вложенный класс, поч...Если есть возможность сделать вложенный класс, почему бы просто не исправить модификатор доступа конструктора базового?Мурадов Мурадhttps://www.blogger.com/profile/06611052686208052951noreply@blogger.com