返回基于枚举名称的枚举字符串

本文关键字:枚举 字符串 返回 于枚举 | 更新日期: 2023-09-27 18:27:37

我有以下代码不起作用,但你可以了解我要做什么。我不知道如何获得基于Enum的字符串。我正在将枚举名称传递给方法:

   class StateInfo
    {
        enum State{ Illinois= 0, Ohio= 1, Indiana= 2, Michigan= 3, Conneticut= 4 }; 
        static void Main(string[] args)
        {
            string result = ConvToJson("State");
        }

        public static string ConvToJson(string enumName)
        {
           Type e = Enum.GetName(typeof(enumName));
          var ret = "{";
          foreach (var val in Enum.GetValues(e))
          {
             var name = Enum.GetName(e, val);
            ret += name + ":" + ((int)val).ToString() + ",";
          }
        ret += "}";
        return ret;
     }
 }

返回基于枚举名称的枚举字符串

您可以使用Type.GetType方法从指定类型名称的字符串中获取类型:

Type e = Type.GetType(enumName);

名称必须指定完整的命名空间,如果类型不在当前执行的程序集中或Mscorlib.dll中,还必须指定程序集名称:

string result = ConvToJson("MyNamespace.StateInfo+State");
string result = ConvToJson("MyNamespace.StateInfo+State, MyAssembly, " +
    "Version=1.3.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089");

将类型直接传递给方法可能更容易:

string result = ConvToJson(typeof(State));
public static string ConvToJson(Type e)