2012-04-19 73 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