Có thể deserialize một enum từ một int trong C#. ví dụ. Nếu tôi có các lớp sau:C# deserializing enums từ số nguyên
class Employee
{
public string Name { get; set;}
public int EmployeeTypeID { get; set;}
}
tôi có thể dễ dàng tạo ra này từ XML
<Employee>
<Name>Joe Bloggs</Name>
<EmployeeTypeID>1</EmployeeTypeID>
</Employee>
sử dụng một cái gì đó như thế này:
Employee employee = (Employee)new XmlSerializer(typeof(Employee)).Deserialize(XmlReader);
Với công việc rất ít tham gia, điều này cho phép tôi sử dụng một dịch vụ chung mà tôi có thể sử dụng cho tất cả các đối tượng cơ sở dữ liệu bằng cách cho ăn một lệnh chọn, chuỗi kết nối và nhập vào và lấy một mảng các đối tượng mà không cần ánh xạ thêm. Tuy nhiên tôi đã đến unstuck với enums. Giả sử bây giờ thay vì trở thành một nhà EmployeeType số nguyên là một enum:
public enum EmployeeTypeEnum
{
Admin = 1,
Sales = 2
}
nên lớp học của tôi trở thành:
class Employee
{
public string Name { get; set;}
public EmployeeTypeEnum EmployeeTypeID { get; set;}
}
Tôi có thể sử dụng XML cùng và làm cho C# nhận ra rằng int giá trị của EmployeeTypeID trong xml phải tương ứng với giá trị int của enum? Có những câu hỏi khác tương tự như vậy, nhưng không có câu trả lời rất thỏa đáng là khá cũ, và liên quan đến việc thay đổi mã bán buôn. Tôi hy vọng cho một giải pháp tốt hơn ...
Như một lưu ý riêng biệt có thể (và hơi dự đoán một số câu trả lời), đang sử dụng enums cho một thực hành tốt nhất nên tránh? Tôi có nên sử dụng cặp khóa-giá trị không? Tôi sẽ luôn sử dụng cặp khóa-giá trị (hoặc tương tự) nếu có khả năng thay đổi, nhưng trong trường hợp này, EmployeeType được sửa và sẽ không bao giờ thay đổi.
+1 - một trong những câu hỏi mà tôi gặp phải mà tôi không thể chứng minh được nhiều việc sử dụng nhưng mong muốn được nhìn thấy câu trả lời. – SkonJeet
http://stackoverflow.com/questions/506368/how-do-i-serialize-an-enum-value-as-an-int có trợ giúp không? – Bridge
Hoặc http://stackoverflow.com/questions/4250656/deserializing-enums? – kerrubin