相关疑难解决方法(0)

C#从整数反序列化枚举

是否可以从c#中的int反序列化枚举.例如,如果我有以下课程:

class Employee
{
   public string Name { get; set;}
   public int EmployeeTypeID { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我可以轻松地从XML创建它

   <Employee>
       <Name>Joe Bloggs</Name>
       <EmployeeTypeID>1</EmployeeTypeID>
   </Employee>
Run Code Online (Sandbox Code Playgroud)

使用这样的东西:

Employee employee = (Employee)new XmlSerializer(typeof(Employee)).Deserialize(XmlReader);
Run Code Online (Sandbox Code Playgroud)

由于涉及的工作非常少,这使我可以使用一个通用服务,通过将select命令,连接字符串和类型输入到并检索对象数组而无需进一步映射,我可以将其用于所有数据库对象.但是我已经忘记了枚举.假设现在而不是整数EmployeeType是一个枚举:

public enum EmployeeTypeEnum
{
   Admin = 1,
   Sales = 2
}
Run Code Online (Sandbox Code Playgroud)

所以我的班级成为:

class Employee
{
   public string Name { get; set;}
   public EmployeeTypeEnum EmployeeTypeID { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我可以使用相同的XML并使c#认识到xml中EmployeeTypeID的int值应该与enum的int值相对应吗?还有其他类似的问题,但没有一个非常令人满意的答案是相当陈旧的,并涉及批量更改代码.我希望有更好的解决方案......

作为一个可能的单独注释(并略微预期一些响应),使用枚举最好避免这种做法?我应该使用键值对吗?如果可能存在更改,我将始终使用键值对(或类似值),但在这种情况下,EmployeeType是固定的,永远不会更改.

.net c# enums deserialization

13
推荐指数
1
解决办法
7038
查看次数

标签 统计

.net ×1

c# ×1

deserialization ×1

enums ×1