如何获取与查询中给定类型匹配的项目中所有元素的列表?例如,如果将类型指定为enum
,则应获取项目中所有枚举的列表。有什么办法吗?
答案 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获得很多枚举。