DCSIMG
Enum.GetNames - (array of enum not of string) - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

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;

}

תוכן התגובה

Eran Stiller כתב/ה:

היי שלמה,

יש שיטה הרבה יותר פשוטה לעשות את מה שאתה מנסה להשיג:

foreach (MyEnum item in Enum.GetValues(typeof(MyEnum)))

{

   // logic

}

# February 14, 2010 7:52 AM

Shlomo כתב/ה:

לא הכרתי, תודה

# February 14, 2010 12:11 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 5 and 5 and type the answer here:


Enter the numbers above: