0
我努力使此方法泛型方法:类型枚举
public static SelectList LanguagesToSelectList()
{
return new SelectList(
Enum.GetValues(typeof(Languages))
.Cast<Languages>()
.Select(g => new KeyValuePair<Languages, string>(
g,
Resources.Views_GamesAndApplications.ResourceManager.GetString("Language_" + g.ToString()
)
)),
"Key",
"Value"
);
}
这里就是我的了:
public static SelectList ToSelectList(Enum enumType, ResourceManager resourceManager, string resourcePrefix)
{
return new SelectList(
Enum.GetValues(typeof(enumType))
.Cast<enumType>()
.Select(g => new KeyValuePair<enumType, string>(
g,
resourceManager.GetString(resourcePrefix + g.ToString())
)),
"Key",
"Value");
}
然而,enumType不应该Enum
类型(也不应该是Type
类型),我不知道应该是什么类型,或者我应该改写整个方法。
用法示例(符合给定的答案):
@Html.DropDownListFor(
m => m.Language,
SelectListHelper.ToSelectList<Languages>
(Resources.Views_GamesAndApplications.ResourceManager,"Language_"))
谢谢。
也许你可以添加你如何调用该方法的一个小例子?也就是说,你应该添加一个[约束来确保T是一个枚举](http://stackoverflow.com/a/1409873/588868)。 –
你需要返回创建的列表(我知道提问者也忘记了)。我不知道他们为什么不制作通用版本的'Enum.GetValues'。而不是'.Cast()'你也可以说'((T [])Enum.GetValues(typeof(T)))'(或者在这种情况下,当你创建KeyValuePair <,>时只是unbox)。 –