Возможно ли десериализовать перечисление из int в c #. например Если у меня есть следующий класс:
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 и заставить c # распознать, что значение int EmployeeTypeID в xml должно соответствовать значению int перечисления? Существуют и другие подобные вопросы, но ни один из них не имеет очень удовлетворительного ответа, они довольно старые и включают массовые изменения в коде. Я надеюсь на лучшее решение ...
Как возможное отдельное примечание (и немного в ожидании некоторых ответов), лучше ли избегать использования перечислений для этого? Должен ли я использовать пары ключ-значение? Я всегда использовал бы пары «ключ-значение» (или аналогичные), если есть вероятность изменений, но в этом случае EmployeeType фиксирован и никогда не изменится.