是否有可能反序列化从int的枚举在c#中。例如如果我有下面的类: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);
由于涉及很少的工作,这让我使用一个通用的服务,我可以使用所有的数据库对象,通过提供一个选择命令,连接字符串和一个类型,并检索一个对象数组,无需进一步映射。不过,我已经与枚举脱钩了。现在假设,而不是作为一个整数EmployeeType是一个枚举:
public enum EmployeeTypeEnum
{
Admin = 1,
Sales = 2
}
所以我的课就变成了:
class Employee
{
public string Name { get; set;}
public EmployeeTypeEnum EmployeeTypeID { get; set;}
}
我可以使用相同的XML,让C#认识到EmployeeTypeID在XML的int值应该与枚举的int值一致吗?还有其他类似的问题,但没有一个有非常满意的答案,而且涉及批量更改代码。我希望有更好的解决方案...
作为一个可能的单独的注释(并稍微预期一些响应),是否使用枚举为此练习最好的避免?我应该使用键值对吗?如果有可能发生变化,我总是使用键值对(或类似的),但在这种情况下,EmployeeType是固定的并且永远不会改变。
+1 - 我遇到的那些问题之一,我不能证明太多用途,但期待看到答案。 – SkonJeet 2012-03-30 14:05:43
是否http://stackoverflow.com/questions/506368/how-do-i-serialize-an-enum-value-as-an-int帮助? – Bridge 2012-03-30 14:08:24
或http://stackoverflow.com/questions/4250656/deserializing-enums? – kerrubin 2012-03-30 14:09:59