You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计类或命名空间中定义的枚举数量?示例需返回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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:15:48