Можно ли десериализовать перечисление из целого числа в С#. например Если у меня есть следующий класс:
class Employee
{
public string Name { get; set;}
public int EmployeeTypeID { get; set;}
}
Я могу легко создать его из XML
<Employee>
<Name>Joe Bloggs</Name>
<EmployeeTypeID>1</EmployeeTypeID>
</Employee>
, используя что-то вроде этого:
Employee employee = (Employee)new XmlSerializer(typeof(Employee)).Deserialize(XmlReader);
С очень небольшими усилиями это позволяет мне использовать одну общую службу, которую я могу использовать для всех объектов базы данных. вводя команду select, строку подключения и тип и извлекая массив объектов без необходимости дальнейшего сопоставления. Однако я оторвался от перечислений. Предположим теперь, что вместо целого числа EmployeeType является перечислением:
public enum EmployeeTypeEnum
{
Admin = 1,
Sales = 2
}
, поэтому мой класс становится следующим:
class Employee
{
public string Name { get; set;}
public EmployeeTypeEnum EmployeeTypeID { get; set;}
}
Могу ли я использовать тот же XML и заставить С# распознавать, что значение int для EmployeeTypeID в xml должно соответствовать значению int для перечисление? Есть и другие похожие вопросы, но ни один из них не имеет удовлетворительного ответа, они довольно старые и требуют массовых изменений в коде. Я надеюсь на лучшее решение...
В качестве возможного отдельного примечания (и немного в ожидании некоторых ответов), лучше ли избегать использования перечислений для этой практики? Должен ли я использовать пары ключ-значение? Я бы всегда использовал пары ключ-значение (или подобные), если бы были изменения, но в этом случае EmployeeType фиксирован и никогда не изменится.