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)。 –