Получите список классов в пространстве имен в C# [дубликат]

Антииспользование:

Одна основная проблема с чрезмерным одноэлементным использованием состоит в том, что шаблон предотвращает легкое расширение и свопинг альтернативных реализаций. Имя класса трудно кодируется везде, где одиночный элемент используется.

9
задан John Rudy 2 December 2009 в 20:48
поделиться

4 ответа

var theList = Assembly.GetExecutingAssembly().GetTypes()
                      .Where(t => t.Namespace == "your.name.space")
                      .ToList();
27
ответ дан 4 December 2019 в 06:35
поделиться

Взгляните на этот Как получить все классы в пространстве имен? предоставленный ответ возвращает массив Type [], вы можете легко изменить это, чтобы вернуть List

2
ответ дан 4 December 2019 в 06:35
поделиться

Без LINQ:

Попробуйте:

Type[] types = Assembly.GetExecutingAssembly().GetTypes();
List<Type> myTypes = new List<Type>();
foreach (Type t in types)
{
  if (t.Namespace=="My.Fancy.Namespace")
    myTypes.Add(t);
}
6
ответ дан 4 December 2019 в 06:35
поделиться

Я могу думать только о циклическом переборе типов в сборке, чтобы найти те, которые находятся в правильном пространстве имен

public List<Type> GetList()
        {
            List<Type> types = new List<Type>();
            var assembly = Assembly.GetExecutingAssembly();
            foreach (var type in assembly .GetTypes())
            {
                if (type.Namespace == "Namespace")
                {
                    types.Add(type);
                }
            }
            return types;
        }
1
ответ дан 4 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: