我有以下代码无效,但您可以了解我要做的事情。我不知道如何获得基于Enum的字符串。我将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;
}
}
答案 0 :(得分:2)
您可以使用Type.GetType Method从指定类型名称的字符串中获取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)