c# - 获取特定类型的所有元素的列表
问题描述
如何获取项目中与查询中给出的类型匹配的所有元素的列表?例如,如果我将类型指定为enum
,我应该得到项目中所有枚举的列表。有什么办法吗?
解决方案
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.
推荐阅读
- sql-server - 防止脚本在未执行的块中生成错误?
- python-3.x - 如何按字典中键的值对字典进行排序?
- google-cloud-dataflow - 用于 org.json.JSONObject 的 Apache Beam 编码器
- javascript - Vue.js 事件监听器
- python - 如何将巨大的 python 列表存储为文件,然后在 python 中将文件作为列表读取?
- tableau-api - 无法在 Tableau 上从 Athena 获取数据
- javascript - 调用后如何将隐藏输入的值设置为函数的值?
- postgresql - 有没有办法合并这些 json 聚合?
- perl - “;”的意义是什么 为 perl 子例程定义形式参数时?
- html - 取消离子搜索栏中的框阴影