Mi pregunta se ilustra mejor con un ejemplo.Asociación de información adicional con .NET Enum
Supongamos que tengo la enumeración:
public enum ArrowDirection
{
North,
South,
East,
West
}
que desea asociar el vector unitario correspondiente a cada dirección con esa dirección. Por ejemplo, quiero algo que retorne (0, 1) para Norte, (-1, 0) para Oeste, etc. Sé que en Java podrías declarar un método dentro de la enumeración que podría proporcionar esa funcionalidad.
Mi solución actual es tener un método estático, dentro de la clase que define la enumeración, que devuelve un vector correspondiente a la pasada en ArrowDirection (el método usa una HashTable para realizar la búsqueda, pero eso no es realmente importante) . Esto parece ... sucio.
Pregunta:
¿Existe una solución de mejores prácticas para almacenar información adicional correspondiente a una enumeración en .NET?
Eso es genial. Aunque sabía sobre extensiones, nunca pensé usarlas para la extensión enum –
Sí, yo tampoco al principio. Un amigo me lo contó. Es muy bonito. También me sorprendió saber (recientemente, aquí en SO) que puede llamar a un método de extensión con un valor nulo. Todavía funciona porque es un método estático. Como de costumbre, el equipo de C# ha hecho un gran trabajo pensando en estas características. –
Obtendrá la respuesta aceptada. Lo intenté y funciona perfectamente. La unica cosa es. ¿Dónde exactamente debería declarar la enumeración? Si lo dejo en la clase, dice que es menos accesible. Tuve que crear una clase "ClassName_Enums" para que funcione ... – colithium