Я пытаюсь сделать из этого метода общий метод:
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_"))
Спасибо.
0
Oren A
3 Фев 2013 в 11:49
1 ответ
Лучший ответ
public static SelectList ToSelectList<T>(ResourceManager resourceManager, string resourcePrefix)
where T : struct
{
return new SelectList(Enum.GetValues(typeof(T)).Cast<T>()
.Select(g => new KeyValuePair<T, string>(g, resourceManager.GetString(resourcePrefix + g.ToString()))), "Key", "Value");
}
//Example:
var list = ToSelectList<Languages>(someResourceManager, "somePrefix");
3
SeeSharp
3 Фев 2013 в 12:14
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
Enum.GetValues
. Вместо.Cast<T>()
вы также можете сказать((T[])Enum.GetValues(typeof(T)))
(или в этом случае просто распаковать при созданииKeyValuePair<,>
).