Как обнаружить классы, отмеченные модификатором файлаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как обнаружить классы, отмеченные модификатором файла

Сообщение Anonymous »

В C# 11 появился новый модификатор типа файла.
Я искал способ обнаружить такой закрытый тип с помощью отражения, однако у меня не нашел никакого «хорошего» способа сделать это.
Не существует метода Is…, который бы определял, ограничен ли тип областью действия только файлом (в отличие от таких методов, как IsPublic, IsNested, … и их комбинации, которые могут определить, является ли метод частным (~ вложенным) или внутренним (~ не общедоступным (но и не вложенным)) и т. д.).
На основании того, что я собрал на данный момент, любой тип в области файла:
  • является не общедоступен -> Type.IsNotPublic == true
  • не вложен -> Type.IsNested* == false
    < li>не «оснащен» каким-либо атрибутом, «базовым классом» или какой-либо другой конструкцией, о которой я могу подумать.
  • можно отличить только по имени типа среды выполнения, имеющему формат примерно

    Код: Выделить всё

    $"{uniqueHexId}__{userTypeName}"
    [Я не ходил в IL, просто искал в сети]
Таким образом, мне удалось придумать следующие регулярные выражения чтобы определить, является ли тип файловым или нет (для меня это достаточно точно):

Код: Выделить всё

[GeneratedRegex("^[A-F0-9]+__.*$")]
private static partial Regex FileScopeClassNameRegex()
Я что-то упускаю из виду или текущей модели Type просто не хватает средств для определения этой конкретной области действия класса?
Точнее : Есть ли какой-нибудь систематический способ обнаружения классов в области файлов в C#?

Я поигрался с фрагментом кода, похожим на эту скрипту.

Подробнее здесь: https://stackoverflow.com/questions/783 ... e-modifier
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»