Странные типы при получении всех типов из сборки - PullRequest
2 голосов
/ 30 марта 2020

Я использую отражение для извлечения типов из пространства имен и делаю некоторые вещи, которые каждый из них:

Type baseType = typeof(BaseUpdate);
            var updateTypes = baseType.Assembly.GetTypes(); 
foreach (var type in updateTypes) {
  if (type.Namespace!="myApp.Logic.Updates") continue;
  // stuff
}

Это прекрасно работает. Я извлекаю все типы, которые хочу, и могу с ними что-то делать. Но в качестве дополнения я также извлекаю некоторые «странные» типы, которые я не совсем понимаю, откуда они берутся. Все они начинаются с «<>» и, кажется, имеют флаг «IsNestedPrivate» - установлен в true: enter image description here Этот флаг помогает мне различать эти типы, но что это такое и почему они есть?

1 Ответ

5 голосов
/ 30 марта 2020

Это классы, которые компилятор сгенерировал за кулисами для реализации таких функций, как лямбда-функции, IEnumerable функциональность (через ключевое слово yield) и async/await конечные автоматы.

Скорее всего, если вы посмотрите в атрибутах типа тогда будет CompilerGenerated

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...