dado una enumeración de esta manera:¿Cómo puedo usar Generics para crear una forma de hacer un IEnumerable a partir de una enumeración?
public enum City {
London = 1,
Liverpool = 20,
Leeds = 25
}
public enum House {
OneFloor = 1,
TwoFloors = 2
}
Estoy utilizando el código siguiente para darme un IEnumerable:
City[] values = (City[])Enum.GetValues(typeof(City));
var valuesWithNames = from value in values
select new { value = (int)value, name = value.ToString() };
El código funciona muy bien, sin embargo tengo que hacer esto desde hace mucho enums. ¿Hay alguna manera de que yo pueda crear una forma genérica de hacer esto?
El problema es que C# no permite las restricciones 'enum' en los tipos genéricos. Puede usar la [melodía no restringida] de Jon Skeet (http://code.google.com/p/unconstrained-melody/). – Adam
Si necesita el 'IEnumerable' solo en tiempo de ejecución, puede usar el reflejo. De lo contrario, puede considerar usar [plantilla] (http://msdn.microsoft.com/en-us/library/bb126445.aspx) Y reflejo. – Guillaume