0

This is an example code:

[DataContract]
public enum SessionOperation
{
    [EnumMember]
    Update,
    [EnumMember]
    Register
}

[DataContract]
public class RequestObject
{
    [DataMember]
    public long ClientId { get; set; }
    [DataMember]
    public long SessionId { get; set; }
    [DataMember]
    public SessionOperation Operation { get; set; }
}

And operation contract:

[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
BaseResponseObject Request(SessionData requestObject);

What I am trying to achieve in my RESTful WCF service is to pass SessionOperation as string and not as value? Like:

{"ClientId": 11935,"SessionId": 635193261351796051, "Operation": "Register"}

Is it somehow possible without manual altering?

eddyuk
  • 4,110
  • 5
  • 37
  • 65

1 Answers1

-1

You can do it like so:

EnumMember(Value="Update") 

MSDN

keydon
  • 729
  • 6
  • 8
  • Didn't worked. I get: There was an error deserializing the object of type RequestObject. The value 'Register' cannot be parsed as the type 'Int64'. – eddyuk Nov 13 '13 at 10:20
  • It doesn't work for me. WCF service can't parse JSON enum field with string value within. Please refer this http://stackoverflow.com/questions/2121010/wcf-deserialize-enum-as-string – Adalyat Nazirov Nov 02 '16 at 08:35