Что случилось с использованием вложенных классов для группировки констант?
Как так:
public static class Constants
{
public static class CategoryA
{
public const string ValueX = "CatA_X";
public const string ValueY = "CatA_Y";
}
public static class CategoryB
{
public const string ValueX = "CatB_X";
public const string ValueY = "CatB_Y";
}
}
Используемый как так:
Console.WriteLine(Constants.CategoryA.ValueY);
Console.WriteLine(Constants.CategoryB.ValueX);
Вы могли также сделать "Константы" - класс неравнодушный...
Существует некоторое руководство (обновленное для fx 4.5) против публичных вложенных классов:
√ ИСПОЛЬЗУЙТЕ вложенные типы, когда отношения между вложенным типом и его внешним типом таковы, что семантика доступности членов желательна.
X ИЗБЕГАЙТЕ публично открытых вложенных типов. Единственным исключением является случай, когда переменные вложенного типа должны быть объявлены только в редких сценариях, таких как подклассификация или другие сценарии расширенной настройки.
X НЕ используйте вложенные типы, если есть вероятность, что на тип будут ссылаться за пределами содержащего типа.
Я думаю, что ваш пример соответствует первому пункту (т.е. вы в порядке).
Кто сказал, что это неправильно? Константы могут быть определены (и определяются) в любом месте иерархии классов.
Я не говорю, что то, что вы сделали неправильно, но как насчет использования пространств имен вместо этого:
namespace Constants
{
public static class CategoryA
{
public const string ValueX = "CatA_X";
public const string ValueY = "CatA_Y";
}
public static class CategoryB
{
public const string ValueX = "CatB_X";
public const string ValueY = "CatB_Y";
}
}