C# 将参数传递到linq表达式中?
我有以下代码将c#enum转换为javascript对象,但是类型对代码不可见,并导致编译时错误。星星内部的类型是问题所在,我想我需要将类型传递到linq表达式中,但是我有股票,有人知道怎么做吗C# 将参数传递到linq表达式中?,c#,C#,我有以下代码将c#enum转换为javascript对象,但是类型对代码不可见,并导致编译时错误。星星内部的类型是问题所在,我想我需要将类型传递到linq表达式中,但是我有股票,有人知道怎么做吗 public static string EnumToJsObj(Enum enumType) { Type type = enumType.GetType(); string strJS = string.Format("{{{0}}} ", string.Join("
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()));
}
您可以将方法设置为泛型方法:
public static string EnumToJsObj<T>(Enum enumType){ ... }
公共静态字符串EnumToJsObj(Enum enumType){…}
或者,您可以使用System.Convert.ChangeType
而不是类型转换来逃脱惩罚。类似的东西
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))
);
}
在
***type***
中需要什么类型?type type=enumType.GetType();我尝试了genereic方法,它说“不能将T类型的表达式强制转换为int”@666-转换枚举而不是强制转换它(参见我的答案)。正如您在中所看到的,System.Enum实现了IConvertible
接口。