0

動作しない次のコードがありますが、私が何をしようとしているのかがわかります。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;
     }

 }
4

1 に答える 1

2

Type.GetType メソッドを使用して、型の名前を指定する文字列からTypeを取得できます。

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)
于 2013-08-13T20:32:35.007 に答える