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

如何将C#静态类的字符串常量属性转换为Dictionary?

将C#静态类中的字符串常量转为Dictionary的实现方法

有两种常用的实现方式,根据你的需求选就行:

方法一:反射自动生成字典(适合常量多、常更新的场景)

通过反射获取静态类里的所有const string字段,自动构建字典,不用手动维护:

using System;
using System.Collections.Generic;
using System.Reflection;

public static class somename
{
    public const string abc = "abc 1";
    public const string xyz = "xyz 2";
    public const string vhj = "vhj 3";

    public static Dictionary<string, string> GetConstants()
    {
        var constantsDict = new Dictionary<string, string>();
        // 获取类中所有公共静态字段
        var fields = typeof(somename).GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);
        
        foreach (var field in fields)
        {
            // 筛选出const类型的string字段
            if (field.IsLiteral && !field.IsInitOnly && field.FieldType == typeof(string))
            {
                constantsDict.Add(field.Name, field.GetValue(null) as string);
            }
        }
        return constantsDict;
    }
}

// 使用示例
class Program
{
    static void Main()
    {
        var dict = somename.GetConstants();
        foreach (var kvp in dict)
        {
            Console.WriteLine($"{kvp.Key}: {kvp.Value}");
        }
    }
}

说明

  • field.IsLiteral用来判断是不是编译期常量(const字段会被标记为Literal),!field.IsInitOnly是为了排除readonly字段(readonly是运行时初始化,不算const)
  • 新增常量时不用改字典代码,反射会自动识别

方法二:手动构建字典(适合常量少、不常变动的场景)

如果常量数量不多,直接手动写字典更直观,也没有反射的性能开销:

public static class somename
{
    public const string abc = "abc 1";
    public const string xyz = "xyz 2";
    public const string vhj = "vhj 3";

    // 手动维护的字典
    public static readonly Dictionary<string, string> ConstantsDict = new Dictionary<string, string>
    {
        { nameof(abc), abc },
        { nameof(xyz), xyz },
        { nameof(vhj), vhj }
    };
}

// 使用示例
foreach (var kvp in somename.ConstantsDict)
{
    Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}

说明

  • 用nameof()可以避免硬编码字段名,字段名修改时编译器会自动提示
  • 缺点是新增或删除常量时,需要同步更新字典内容

内容的提问来源于stack exchange,提问作者Murtuza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:11:04