我有以下代码将c#enum转换为javascript对象,但这些类型对代码是不可见的,并导致编译时错误。星星内部的类型是问题所在,我想我需要将类型传递给linq表达式,但我是股票,有没有人知道如何做到这一点?
public static string EnumToJsObj(Enum enumType)
{
Type type = enumType.GetType();
string strJS = string.Format("{{{0}}} ",
string.Join(", ", Enum.GetNames(type).ToList().ConvertAll(key =>
{
return string.Format("{0} : {1}", key, (int)((***type***)Enum.Parse(typeof(***type***), key)));
}).ToArray()));
}
答案 0 :(得分:3)
这样的东西?
public static string EnumToJsObj(Enum enumType)
{
Type t = enumType.GetType();
return new JavaScriptSerializer().Serialize(
Enum.GetNames(t).ToDictionary(e => e, e => (int)Enum.Parse(t,e))
);
}
答案 1 :(得分:0)
您可以将方法设为通用方法:
public static string EnumToJsObj<T>(Enum enumType){ ... }
或者您可以使用System.Convert.ChangeType
代替类型转换。