Enum.GetNames - (array of enum not of string)
כשרוצים לרוץ בלולואה על כל ה - האפשרויות ב - enum כלשהו, בדרך כלל רואים קוד כזה
string[] names = Enum.GetNames(typeof(MyEnum));
foreach (string item in names)
{
MyEnum myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), item);
// logic...
}
מה שעשיתי היה לקבל את כל מה שיש ב - enum כמערך של מחרוזות ואז בלולאה להמיר כל אחד ממנו למופע של ה - enum.
כדי לא לכתוב את הקוד (המכוער) כל הזמן אני מעדיך לכתוב כך:
MyEnum[] names = typeof(MyEnum).GetNames<MyEnum>();
foreach (MyEnum item in names)
{
// logic
}
וזה מתאפשר לי בזכות ה - Extension Method הבא:
public static T[] GetNames<T>(this Type enumType) where T : struct
{
string[] names = Enum.GetNames(enumType);
T[] returnArray = names.Select<string, T>(x => (T)Enum.Parse(enumType, x)).ToArray();
return returnArray;
}