Дорогой блог!
Сегодня я расскажу тебе о том, как получить сразу все поля перечислимого типа. Чтобы не путать тебя, дневник, я сразу расскажу, какой перечислимый тип у нас будет:
public enum MyEnum
{
Field,
AnotherField,
OneMore
}
Когда я был совсем маленьким и неумным я делал так:
public MyEnum[] GetMyEnumValues()
{
return new MyEnum[] {
MyEnum.Field,
MyEnum.AnotherField,
MyEnum.OneMore
};
}
Но если я или другой программист когда-нибудь добавит поле в перечислимый тип, или наоборот уберет его, или просто изменит его название, все сломается. Поэтому так делать плохо и так делают только плохие программисты. А хорошие программисты всегда делают так:
public IList<MyEnum> MyEnumFields
{
get
{
IList<MyEnum> result = new IList<MyEnum>();
MyEnum values = MyEnum.Field;
foreach(FieldInfo field in typeof(MyEnum).GetFields())
if (field.FieldType.Equals(typeof(MyEnum)))
result.Add((MyEnum)field.GetValue(value));
return result;
}
}
Дорогоуважаемые программисты! Пожалуйста будьте только хорошими и не расстраивайте своих коллег, и аналитиков, и менеджеров. Обращайтесь с типами правильно и изучайте типы.
До скорых встреч!
5 комментариев:
Чет очень сложно как-то.
string[] zNames = Enum.GetNames(typeof(XEAction));
Array values = Enum.GetValues(typeof(XEAction));
я ждал, когда кто-нибудь скажет это :)
А в чем подвох? :)
ты не поверишь :)
ни в чем, кроме того, что GetFields работает для чего угодно, а GetValues -- только для енумов
Ну ладно :)
Отправить комментарий