¿Es posible deserializar una enumeración de un int en C#. p.ej. Si tengo la clase siguiente:C# deserializing enumeraciones de enteros
class Employee
{
public string Name { get; set;}
public int EmployeeTypeID { get; set;}
}
que puede crear fácilmente esto desde XML
<Employee>
<Name>Joe Bloggs</Name>
<EmployeeTypeID>1</EmployeeTypeID>
</Employee>
usar algo como esto:
Employee employee = (Employee)new XmlSerializer(typeof(Employee)).Deserialize(XmlReader);
Con muy poco trabajo en cuestión, esto me permite utilizo un servicio genérico que puedo usar para todos los objetos de la base de datos alimentando un comando de selección, una cadena de conexión y un tipo para recuperar una matriz de objetos sin necesidad de mapeo adicional. Sin embargo, me he despegado con enumeraciones. Suponiendo ahora en lugar de ser un EmployeeType entero es una enumeración:
public enum EmployeeTypeEnum
{
Admin = 1,
Sales = 2
}
así que mi clase se convierte en:
class Employee
{
public string Name { get; set;}
public EmployeeTypeEnum EmployeeTypeID { get; set;}
}
¿Puedo usar el mismo XML y hacer C# reconocen que el valor int de EmployeeTypeID en el xml debe corresponder con el valor int de la enumeración? Hay otras preguntas similares que existen, pero ninguna tiene una respuesta muy satisfactoria, son bastante antiguas e implican cambios al código mayoristas. Estoy esperando una solución mejor ...
Como posible nota aparte (y un poco anticipándose a algunas respuestas), ¿está utilizando enums para esto una práctica que es mejor evitar? ¿Debería usar pares clave-valor? Siempre usaría pares clave-valor (o similar) si hubiera cambios, pero en este caso EmployeeType es fijo y nunca cambiará.
+1 - una de esas preguntas con las que no puedo demostrar el uso, pero espero ver la respuesta. – SkonJeet
¿Tiene http://stackoverflow.com/questions/506368/how-doi-i-serialize-an-enum-value-as-an-int ayuda? – Bridge
O http://stackoverflow.com/questions/4250656/deserializing-enums? – kerrubin