获取特定类型的所有元素的列表

时间:2020-01-16 06:31:28

标签: c# asp.net-core

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

1 个答案:

答案 0 :(得分:2)

我想您想在所有可访问的程序集中获取所有可访问的枚举。

使用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获得很多枚举。

enter image description here

相关问题