我有一個標誌屬性枚舉的背後是一個Web服務,如下所示:標誌與Web服務
[Serializable,Flags]
public enum AccessLevels
{
None = 0,
Read = 1,
Write = 2,
Full = Read | Write
}
我的問題是我的web服務的消費者不具備枚舉的原始常數值。得到的代理類客戶端有一些達此:
{
None = 1,
Read = 2,
Write = 4,
Full = 8
}
因此當消費者正在檢查「讀」訪問,這將是錯誤的,即使「testItem」是「全」
((testItem & Svc.Read) == Svc.Read)
如何正確提供Web服務的標誌?
編輯:
根據this文章它可能無法做什麼,我希望做。伊萬Krivyakov指出枚舉
原來的
不完善的透明度枚舉不如 透明的,因爲我們想的那樣。 有三個粘的問題:
- 如果服務器端代碼聲明枚舉和具體數字 值分配給其成員,這些值 不會給客戶端可見。
- 如果服務器端代碼聲明具有「複合」掩碼 值(如White = Red | Green | Blue)的[Flags]枚舉,則 將不會在客戶端 上正確反映。
- 如果服務器或客戶端傳輸的值超出了枚舉範圍 之外的「非法」值,則會導致另一端的XML解串器發生異常。
所以我想知道這是否只是一個限制,是不可能的。
你能否解釋一下? – Brawndo 2009-02-03 08:11:42