Tôi có một liệt kê thuộc tính cờ đó là đằng sau một dịch vụ web như sau:Flags với các dịch vụ web
[Serializable,Flags]
public enum AccessLevels
{
None = 0,
Read = 1,
Write = 2,
Full = Read | Write
}
Vấn đề của tôi là người tiêu dùng dịch vụ web của tôi không có giá trị không đổi ban đầu của enum. Kết quả là bên lớp proxy client có cái gì mà số tiền này:
{
None = 1,
Read = 2,
Write = 4,
Full = 8
}
Và như vậy, khi người tiêu dùng đang kiểm tra cho "Đọc" truy cập này sẽ là sai lầm ngay cả khi "testItem" là "đầy đủ"
((testItem & Svc.Read) == Svc.Read)
Tôi làm cách nào để cung cấp cờ hiệu quả cho dịch vụ web?
EDIT:
Theo this Điều đó có thể không thể làm những gì tôi đang tìm kiếm để làm. Ivan Krivyakov khẳng định
Imperfect Tính minh bạch của Enums
Nó chỉ ra rằng sự đếm không phải là minh bạch như chúng tôi muốn họ được. Có ba vấn đề dính:
- Nếu mã server-side tuyên bố một enum và gán số cụ thể giá trị cho các thành viên, các giá trị sẽ không được hiển thị cho khách hàng.
- Nếu mã phía máy chủ khai báo [Flags] enum với mặt nạ "hợp chất" giá trị (như màu trắng = đỏ | Xanh | Xanh), nó không được phản ánh đúng trên mặt của máy khách .
- Nếu máy chủ hoặc ứng dụng khách truyền một giá trị "bất hợp pháp" nằm ngoài phạm vi phạm vi của enum, nó gây ra một ngoại lệ trong bộ tách XML trên phía bên kia.
Vì vậy, tôi tự hỏi nếu đây chỉ là một hạn chế và không thể.
Tôi nghĩ rằng đây là con đường mà tôi có thể cần phải thực hiện ở đây. Tôi thực sự muốn có thể có tùy chọn "Không" được viết cho người dùng của tôi. – Brawndo