Пришла идея макроса Visibility, который позволяет переопределить видимость членов класса, стоящих
после этого слова, как в С++, например:
class Test
{
[Visibility(Public)]
this() {}
Member1 : string;
Member2 : int;
}
сделал заготовку макроса, и идея работает, единственно есть сложности, это не работает на встроенных
типах, например на объявления type. Макрос реализуется с помощью модификации поля Attributes для
ClassMember для членов в typebuilder находящихся после аттрибута и до следующего объявления
макроса, вопрос теперь в том как модифицировать видимость
для вложенных типов, когда модифицируется в ClassMember видимость в Attributes, то типы все равно
остаются private, если менять в TypeBuilder для того типа который принадлежит члену, но
в TypeBuilder нет методов установки для Attributes. Было бы хорошо и для внешних классов сделать
такой макрос, но там работа только с TypeBuilder, может ли кто нибудь подсказать, кто сведущь
во внутренностях компилятора, как решить эту задачу?