В моем приложении у меня есть некоторая информация, которая может быть одним из небольшого набора значений - поэтому я хотел бы использовать перечисление для его хранения, обеспечивая действительные значения через безопасность типов во время компиляции:
public enum Something { A1, A2, A3, B1, B2, C1 };
Эти перечисления представляют многомерные данные (в приведенном выше примере они имеют букву и цифру), поэтому я хотел бы иметь возможность получить значение, связанное с ними, например,
Something example = Something.A1;
// Now I want to be able to query the values for example:
example.Letter; // I want to get "A"
example.Number; // "1"I want to get 1
У меня есть два возможных решения, но ни одно из них не кажется очень «чистым», поэтому мне было интересно, какие люди предпочитают и почему, и есть ли у кого-нибудь лучшие идеи.
Вариант 1. Созданиеstruct, которая упаковывает перечисление и предоставляет свойства для упакованных данных, например,
public struct SomethingWrapper
{
public Something Value { get; private set; }
public SomethingWrapper(Something val)
{
Value = val;
}
public string Letter
{
get
{
// switch on Value...
}
}
public int Number
{
get
{
// switch on Value...
}
}
}
Опция 2. Оставьте перечисление как есть и создайте статический класс Helper, который предоставляет статические функции, которые получают значения:
public static class SomethingHelper
{
public static string Letter(Something val)
{
// switch on val parameter
}
public static int Number(Something val)
{
// switch on val parameter
}
}
Что мне выбрать и почему?Или есть лучшее решение, о котором я не думал?