Здравствуйте, hardcase, Вы писали:
_FR>>Мне кажется, это усложнило бы спеку рантайма/метаданных, сценарии перегрузки и разрешения имён (одна и так из самых не простых тем), пришлось бы задать правила инициализации
_FR>>таких полей (может и конструктор неймспейсу понадобился бы?), рефлекшен, какие-то ещё сценарии.
H>Спецификацию это никак бы не расширило просто потому что в .NET метаданных уже есть концепция "модуля" который и представляет собою статический класс.
Хм. Учитывая то, как Влад трактует ответы ему, я уже боюсь (не хочу) рассуждать свободно: разве в модуль может быть вложен в другой модуль (класс же может быть объявлен внутри другого класса)?
И я не уверен, что модуль это именно то, что нужно Владу: ему, как мне показалось, хочется иметь возможность декларировать константы (и методы и [не вижу причин не позволять] всё остальное) на уровне пространства имён, а не модуля. модуль же просто контейнер для типов и нужен не столько для логического разделения типов, сколько для физического (например если часть типов в нашей одной сборке собирается одним компилятором, а часть другим). Строго говоря, разница будет.
Логически же (как я и сам это понимаю) да, так почти и есть, об том я и сказал: реализовать то, чего не хватает Владу в каком-либо .NET-языке можно "фейковым" статическим классом (опять же строго говоря
abstract sealed) в нужном пространстве имён: то, что Влад попросил можно самим сделать в виде скрытого от пользователя статического класса, расширения метаданных не требуется.
С точки зрения языка C# мне кажется это вызовет дополнительные трудности. На сколько большие не не возьмусь судить.
_FR>>чтобы пользователь ненароком не подключил бы что-то, что вызовет конфликты с другими определениями. А может и того хуже — не конфликты, а втихую перегрузка отработает не ожиданным для пользователя виде.
H>Механизмы разруливания конфликтов в виде extern alias в .NET представлены искаропки.
"
extern alias" (если я правильно понял о чём речь) на сколько мне известно позволяет решать конфликты между именами типов (в одних и тех же пространствах имён) в различных сборках и я не вижу, как он бы помог тут.