我有一个dataContract。
ItemInfo SearchItemByGuid(ClientEnum client, string itemGuid);
其中ClientEnum是:
enum ClientEnum
{
Client1,
Client2,
}
我将通过webHttpBinding公开数据合同。 所以我必须使用WebGet。 某种......
[WebGet(UriTemplate = "items/{client}/{itemguid}"]
ItemInfo SearchItemByGuid(ClientEnum client, string itemGuid);
所以问题是,我如何以良好的方式处理枚举类型....?
思路:
任何想法?
更新
我似乎找到了一个解决方案: 所以...
public class ClientEnumQueryStringConverter : QueryStringConverter
{
public override object ConvertStringToValue(string parameter, Type parameterType)
{
//here goes actual conversion
return base.ConvertStringToValue(parameter, parameterType);
}
public override string ConvertValueToString(object parameter, Type parameterType)
{
//here goes actual conversion
return base.ConvertValueToString(parameter, parameterType);
}
public override bool CanConvert(Type type)
{
if (type == typeof(ClientEnum))
return true;
return base.CanConvert(type);
}
}
最后......
public class MyWebHttpBehavior : WebHttpBehavior
{
WebMessageFormat defaultOutgoingResponseFormat;
public MyWebHttpBehavior()
{
this.defaultOutgoingResponseFormat = WebMessageFormat.Json;
HelpEnabled = true;
}
public override WebMessageFormat DefaultOutgoingResponseFormat
{
get
{
return this.defaultOutgoingResponseFormat;
}
set
{
this.defaultOutgoingResponseFormat = value;
}
}
protected override QueryStringConverter GetQueryStringConverter(OperationDescription operationDescription)
{
return new ClientEnumQueryStringConverter ();
}
}