using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using Test.ServiceModel;
namespace Test.ServiceModel
{
public enum EnumAsInt
{
Value1 = 1000,
Value2 = 2000,
Value3 = 3000,
}
[Flags]
public enum EnumFlags
{
Value0 = 0,
Value1 = 1,
Value2 = 2,
Value3 = 4,
Value123 = 7,
}
public enum EnumStyle
{
lower,
UPPER,
PascalCase,
camelCase,
camelUPPER,
PascalUPPER,
}
public enum EnumStyleMembers
{
[EnumMember(Value="lower")]
Lower,
[EnumMember(Value="UPPER")]
Upper,
[EnumMember(Value="PascalCase")]
PascalCase,
[EnumMember(Value="camelCase")]
CamelCase,
[EnumMember(Value="camelUPPER")]
CamelUpper,
[EnumMember(Value="PascalUPPER")]
PascalUpper,
}
public enum EnumType
{
Value1,
Value2,
Value3,
}
[Flags]
public enum EnumTypeFlags
{
Value1 = 0,
Value2 = 1,
Value3 = 2,
}
public enum EnumWithValues
{
[EnumMember(Value="None")]
None,
[EnumMember(Value="Member 1")]
Value1,
[EnumMember(Value="Value2")]
Value2,
}
public partial class HelloWithEnum
{
public virtual EnumType EnumProp { get; set; }
public virtual EnumTypeFlags EnumTypeFlags { get; set; }
public virtual EnumWithValues EnumWithValues { get; set; }
public virtual EnumType? NullableEnumProp { get; set; }
public virtual EnumFlags EnumFlags { get; set; }
public virtual EnumAsInt EnumAsInt { get; set; }
public virtual EnumStyle EnumStyle { get; set; }
public virtual EnumStyleMembers EnumStyleMembers { get; set; }
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /jsv/oneway/HelloWithEnum HTTP/1.1
Host: test.servicestack.net
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
enumProp: Value1,
enumTypeFlags: 0,
enumWithValues: None,
nullableEnumProp: Value1,
enumFlags: 0,
enumAsInt: Value1,
enumStyle: lower,
enumStyleMembers: lower
}