在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);
使用很少的工作量,我可以通过提供选择命令、连接字符串和类型等信息,从而使用一个通用服务来处理所有数据库对象,并获取一个对象数组,而无需进一步映射。但是,当枚举类型不是整数而是一个枚举值时,我就遇到了一些麻烦:
public enum EmployeeTypeEnum
{
Admin = 1,
Sales = 2
}
所以我的类变成:
class Employee
{
public string Name { get; set;}
public EmployeeTypeEnum EmployeeTypeID { get; set;}
}
我能否使用相同的XML,并使C#识别其中EmployeeTypeID的int值应与枚举类型的int值相对应?虽然有类似的其他问题,但没有一个令人满意的答案,而且这些问题都比较陈旧,需要对代码进行全面更改。我希望有一个更好的解决方案...
作为可能的另一个注意事项(并稍微预期一些回复),使用枚举类型是否是最好避免的做法?我是否应该使用键值对?如果可能会发生更改,我总会使用键值对(或类似的东西),但在这种情况下,EmployeeType是固定的,不会改变。