是否有可能反序列化從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