我有一些枚舉,需要讓他們爲List<string>
對象以列舉通過他們,並因此取得了GetEnumAsStrings<T>()
方法。這是GetEnumAsStrings <T>()方法重新發明輪子嗎?
但在我看來,會有一個更簡單的方法。
是否沒有內置的方法來獲得像這樣的枚舉成List<string>
?
using System;
using System.Collections.Generic;
namespace TestEnumForeach2312
{
class Program
{
static void Main(string[] args)
{
List<string> testModes = StringHelpers.GetEnumAsStrings<TestModes>();
testModes.ForEach(s => Console.WriteLine(s));
Console.ReadLine();
}
}
public static class StringHelpers
{
public static List<string> GetEnumAsStrings<T>()
{
List<string> enumNames = new List<string>();
foreach (T item in Enum.GetValues(typeof(TestModes)))
{
enumNames.Add(item.ToString());
}
return enumNames;
}
}
public enum TestModes
{
Test,
Show,
Wait,
Stop
}
}
附錄:
謝謝大家,非常有見地。因爲我最終需要此爲的Silverlight這似乎並沒有對枚舉GetValues()
或GetNames()
,我做了這個方法,這是我從this method創建:
public static List<string> ConvertEnumToListOfStrings<T>()
{
Type enumType = typeof(T);
List<string> strings = new List<string>();
var fields = from field in enumType.GetFields()
where field.IsLiteral
select field;
foreach (FieldInfo field in fields)
{
object value = field.GetValue(enumType);
strings.Add(((T)value).ToString());
}
return strings;
}