【发布时间】:2012-04-14 05:22:35
【问题描述】:
是否可以从 c# 中的 int 反序列化枚举。例如如果我有以下课程:
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);
只涉及很少的工作,这允许我使用一个通用服务,我可以通过输入一个选择命令、连接字符串和一个类型来对所有数据库对象使用该服务并检索一个对象数组,而无需进一步映射.但是,我对枚举感到困惑。现在假设 EmployeeType 不是整数,而是枚举:
public enum EmployeeTypeEnum
{
Admin = 1,
Sales = 2
}
所以我的班级变成了:
class Employee
{
public string Name { get; set;}
public EmployeeTypeEnum EmployeeTypeID { get; set;}
}
能否使用同一个xml,让c#识别xml中EmployeeTypeID的int值应该和enum的int值对应?还有其他类似的问题,但没有一个非常令人满意的答案是相当古老的,并且涉及对代码的大规模更改。我希望有更好的解决方案...
作为一个可能的单独说明(并且稍微期待一些响应),最好避免使用枚举吗?我应该使用键值对吗?如果可能发生更改,我将始终使用键值对(或类似的),但在这种情况下,EmployeeType 是固定的,永远不会改变。
【问题讨论】:
-
+1 - 我遇到的问题之一,我无法证明有多大用处,但期待看到答案。
-
@Bridge 是的,这确实有很大帮助,我正忙着寻找我错过了那篇文章的“反序列化枚举”。
标签: c# .net enums deserialization