Если я не могу использовать перечисление для набора предопределенных значений, я использую класс статических констант.Они выглядят почти одинаково в использовании, но значения могут быть любыми, от десятичного до строкового, до структуры или классаЯ сделал это для предопределенных цветовых схем ячеек в GridViews, так же, как встроенный класс Color имеет предопределенные постоянные значения.Математические и научные константы, такие как e и Pi (если вы хотели, чтобы значения отличались от тех, которые предоставляются классом Math), или ускорение силы тяжести (9,8 м / с 2 ), или скорость света (299 792 458)m / s), также может быть указан следующим образом.
Если вы считаете, что не можете использовать Enums, потому что вам нужно хранить предопределенные строковые значения, попробуйте этот удобный прием, используя атрибут описания System.ComponentModel:
public Enum MyStrings
{
[Description("This is string one")] StringOne,
[Description("This is a different string")] StringTwo,
...
}
Чтобы получить строки, вы просто исследуете атрибут Description, код для которого немного запутан, но его легко спрятать за методом расширения:
public static string GetDescription(this Enum enumValue)
{
object[] attr = enumValue.GetType().GetField(enumValue.ToString())
.GetCustomAttributes(typeof (DescriptionAttribute), false);
return (attr.Length > 0)
? ((DescriptionAttribute) attr[0]).Description
: String.Empty;
}
Использование:
var stringOne = MyStrings.StringOne.GetDescription(); //"This is string one"
В этом случае вы также можете рассмотреть возможность использования файла ресурсов.Значение строки может быть изменено вне области программы без перекомпиляции.