2012-04-19 59 views
1

我在C#中有一個簡單的WCF項目。我使用的是DTO User.cs:WCF中的默認枚舉值問題REST調用

public UserDTO 
{ 

private EmailType _emailType = EmailType.NotSpecified; 

[DataMember] 
public EmailType UserEmailType 
{ 
get { return _emailType; } 
set { _emailType = value; } 
} 
} 

EmailType.cs有這些值:

None = -1, 
NoEmail = 0, 
All = 1 
在服務項目

現在我有這樣的方法:

public RestResponse CreateNewUser(UserDTO user) 
{ 
try 
{ 
//my code to call BL to create a new user 
} 
} 

但是,當我調用此方法(使用RESTful URL),CreateNewUser()方法被觸發。我注意到user.UserEmailType被設置爲NoEmail(0),而不是我在私有屬性實例中指定的內容。看起來像.NET REST API框架將其設置爲0即使我已將它設置爲UserDTO類中的一個不同的值。你能告訴我爲什麼UserEmailType設置爲0而不是-1?

+0

您作爲示例給出的枚舉不具有您在'UserDTO'中指定的值。 – 2012-04-19 12:53:57

+0

它可能是從一個0 UserEmailType屬性值初始化 - 爲什麼不只是讓你的生活更輕鬆,並使你想要的0作爲初始值。 – NSGaga 2012-04-19 12:58:00

+0

@DBM:你說得對。你可以請分享一下,爲什麼當我指定的值不存在於UserDTO中時,它會自動將它設置爲0(而不是-1)?也請創建一個答案,以便我可以將您的答覆標記爲答案。 – 2012-04-19 12:59:58

回答

-2

將值設置爲2的冪,它將起作用。

[Flags] 
enum EmailType 
{ 
None = 0, 
NoEmail = 1, 
All = 2 
} 

試試這個代碼,它會正常工作。不確定人們爲什麼給予 - 沒有任何解釋的反饋。這對我來說很有趣。

我發佈了答案,因爲我有完全相同的問題,這個解決方案真的對我有用。

感謝這不是一個好答案:)感謝。

+0

enum DaysOfWeek {Tractor,False,FileNotFound} – 2012-04-19 13:58:09

+0

你想用這段代碼傳達什麼<< enum DaysOfWeek {Tractor,False,FileNotFound} >> – Shailesh 2012-04-20 05:02:58