method inside c# class-design constants nested-class

class inside method c#



¿Usando clases anidadas para constantes? (3)

¿Quién dijo que estaba mal? Las constantes se pueden (y están) definidas en cualquier lugar en una jerarquía de clases.

¿Qué hay de malo en usar clases anidadas para agrupar constantes?

Al igual que:

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"; } }

Utilizado como tal:

Console.WriteLine(Constants.CategoryA.ValueY); Console.WriteLine(Constants.CategoryB.ValueX);

También podrías hacer las "Constantes" -clase parcial ...


Hay algunas guideline (actualizadas para fx 4.5) contra las clases anidadas públicas:

√ SI use tipos anidados cuando la relación entre el tipo anidado y su tipo externo es tal que la semántica de accesibilidad de los miembros es deseable.

X EVITA los tipos anidados expuestos públicamente. La única excepción a esto es si las variables del tipo anidado se deben declarar solo en escenarios raros, como subclases u otros escenarios de personalización avanzada.

X NO utilice tipos anidados si es probable que se haga referencia al tipo fuera del tipo que lo contiene.

Creo que tu ejemplo coincide con el primer punto (es decir, eres bueno).


No estoy diciendo que lo que hiciste está mal, pero ¿qué pasa con el uso de espacios de nombres?

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"; } }