首页 > 解决方案 > 获取特定类型的所有元素的列表

问题描述

如何获取项目中与查询中给出的类型匹配的所有元素的列表?例如,如果我将类型指定为enum,我应该得到项目中所有枚举的列表。有什么办法吗?

标签: c#asp.net-core

解决方案


I guess you want to get all accessible enums among all accessible assemblies.

With C# reflection, you can easily get all referenced assemblies with current entry. From them you can get all enums with some filters like Where(t => t.IsEnum).

Example code:

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();
}

Caution: Calling this may get lots of enums from Microsoft.

enter image description here


推荐阅读