Получить список всех элементов определенного типа

Как я могу получить список всех элементов в проекте, который соответствует типу, указанному в запросе? Например, если я укажу тип как enum , я должен получить список всех перечислений в проекте. Есть ли способ сделать это?

Всего 1 ответ


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

С отражением C # вы можете легко получить все ссылки на сборки с текущей записью. Из них вы можете получить все перечисления с некоторыми фильтрами, такими как Where(t => t.IsEnum) .

Пример кода:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

public static List<Type> AllAccessiableEnums()
{
    var entry = Assembly.GetEntryAssembly();
    var referenced = entry
        .GetReferencedAssemblies()
        .Select(t => Assembly.Load(t))
        .ToList();

    referenced.Add(entry);

    return referenced
        .SelectMany(t => t.GetTypes())
        .Where(t => t.IsEnum) // Use your own filter here.
        .ToList();
}

Внимание: вызов этого может получить много перечислений от Microsoft.

введите описание изображения здесь


Есть идеи?

10000