C# - Információ kérés egy tetszőleges felsorolt típusról

forráskód letöltése
A felsorolt típus elemeihez tetszőleges értékeket rendelhetünk. Ezek az értékek akár programból is lekérdezhetők. Továbbá lehetőségünk van arra is, hogy a felsorolt típus egy elemét úgy hozzuk létre, hogy annak nevét sztringént adjuk meg. Ilyen és ehhez hasonló trükkökkel ismerkedünk mostani cikkünkben.
Segítségünkre az Enum nevű osztály siet. Ebben találhatók azok a függvények, melyek segítségével fenti műveleteket el tudjuk végezni.
A próbához készítsünk először is egy felsorolt típust SampleEnum névvel. Ebbe néhány napnak a nevét vesszük fel, értékül a sorszámukat adva.
  public enum SampleEnum
  {
    Monday=1,
    Tuesday=2,
    Friday=5,
    Sunday=7
  };
A felsorolt típus információinak lekérdezéséhez szükségünk lesz annak típusára, melyet a typeof operátorral kérdezhetünk le.
      Type t = typeof(SampleEnum);
      SampleEnum se = new SampleEnum();
GetNames
Osztály: System.Enum
public static string[] GetNames(
Type enumType
);
A felsorolt típus elemeinek megnevezését az Enum GetNames függvénye szolgáltatja.
Paraméterek
Type enumType
Az enumType paraméterbe kell megadnunk annak a felsorolt típusnak a típusát, melynek a neveit szeretnénk lekérdezni.
Visszatérési érték
Egy sztringeket tartalmazó tömböt kapunk, melynek minden eleme a felsorolt típus egy-egy elemének nevét írja le.
Példa
listBox1.Items.AddRange(Enum.GetNames(t));
GetValues
Osztály: System.Enum
public static Array GetValues(
Type enumType
);
A felsorolt típus elemeihez tartozó értékeket a GetValues függvény szolgáltatja.
Paraméterek
Type enumType
Az enumType paraméterbe kell megadnunk annak a felsorolt típusnak a típusát, melynek értékeit szeretnénk lekérdezni.
Visszatérési érték
Visszatérési értékként egy Array osztályt kapunk. Ebbe a tömbbe kerülnek felsorolásra az értékek.
Példa
      Array a = Enum.GetValues(t);
      for (int i=0; i<a.Length; i++)
      {
        listBox1.Items.Add((Int32)a.GetValue(i));
      }
GetName
Osztály: System.Enum
public static string GetName(
Type enumType,
object value
);
Egy felsorolt típus példányának nevét a GetName függvény szolgáltatja.
Paraméterek
Type enumType
Az enumType paraméterbe kell megadnunk annak a felsorolt típusnak a típusát, melynek a nevét szeretnénk lekérdezni.
object value
A value paraméterbe kerül annak a felsorolt típusnak a példánya, melynek a nevét szeretnénk lekérdezni.
Visszatérési érték
Sztringként megkapjuk a felsorolt típus elemének nevét.
Példa
      se = SampleEnum.Monday;
      listBox1.Items.Add("GetName: " + Enum.GetName(t, se));
Parse
Osztály: System.Enum
public static object Parse(
Type enumType,
string value
);
Egy felsorolt típus példányát létrehozhatjuk, ha ismerjük a típusát és sztringként rendelkezésünkre áll az elemének a neve.
Paraméterek
Type enumType
Az enumType paraméterbe kell megadnunk annak a felsorolt típusnak a típusát, melynek példányát szeretnénk létrehozni.
string value
A felsorolt típus elemének megnevezése.
Visszatérési érték
A felsorolt típus létrehozott példánya.
Példa
    se = (SampleEnum)Enum.Parse(t, "Sunday");
    listBox1.Items.Add("Parse: " + Enum.GetName(t, se));
ToObject
Osztály: System.Enum
public static object ToObject(
Type enumType,
object value
);
Egy felsorolt típus példányát úgy is létrehozhatjuk, hogy ismerjük annak hozzárendelt értékét és típusát.
Paraméterek
Type enumType
Az enumType paraméterbe kell megadnunk annak a felsorolt típusnak a típusát, melynek példányát szeretnénk létrehozni.
object value
A value paraméterbe kerül a felsorolt típus létrehozandó elemének értéke.
Visszatérési érték
A felsorolt típus létrehozott példánya.
Példa
    se = (SampleEnum)Enum.ToObject(t, 5);
    listBox1.Items.Add("ToObject: " + Enum.GetName(t, se));