如何统计类或命名空间中定义的枚举数量?示例需返回3
统计命名空间/类中的枚举数量
嘿,这事儿好办!要统计指定命名空间或者类里的枚举数量,咱们用.NET的反射机制就能轻松搞定,刚好匹配你那三个枚举的需求,最终能返回结果3。
完整代码示例(针对命名空间下的枚举)
假设你的三个枚举都定义在MyEnums命名空间下,代码实现如下:
using System; using System.Linq; using System.Reflection; // 你的枚举定义 namespace MyEnums { enum MyEnumA { } enum MyEnumB { } enum MyEnumC { } } class EnumCounter { static void Main() { // 获取当前程序集中属于目标命名空间的所有枚举类型并计数 var enumCount = Assembly.GetExecutingAssembly() .GetTypes() .Where(type => type.Namespace == "MyEnums" && type.IsEnum) .Count(); Console.WriteLine(enumCount); // 输出:3 } }
关键代码解释
Assembly.GetExecutingAssembly():拿到当前运行的程序集,也就是包含你那三个枚举的程序集。.GetTypes():取出程序集里的所有类型。.Where(type => type.Namespace == "MyEnums" && type.IsEnum):筛选出属于目标命名空间,并且是枚举类型的条目。.Count():直接统计符合条件的枚举数量。
如果枚举定义在类内部怎么办?
要是你的枚举是嵌套在某个类里的,只需要调整筛选逻辑就行:
// 假设枚举定义在MyClass类内部 class MyClass { enum MyEnumA { } enum MyEnumB { } enum MyEnumC { } } class EnumCounter { static void Main() { var enumCount = typeof(MyClass) .GetNestedTypes(BindingFlags.Public | BindingFlags.NonPublic) .Where(type => type.IsEnum) .Count(); Console.WriteLine(enumCount); // 输出:3 } }
这样不管枚举是在命名空间下还是类内部,都能准确统计出数量啦!
内容的提问来源于stack exchange,提问作者ZuenTongXu
相关产品推荐
相关产品推荐

