我有一个数据合同。
ItemInfo SearchItemByGuid(ClientEnum client, string itemGuid);
其中 ClientEnum 是:
enum ClientEnum
{
Client1,
Client2,
}
我将通过 webHttpBinding 公开数据合约。所以我必须使用WebGet。某一些...
[WebGet(UriTemplate = "items/{client}/{itemguid}"]
ItemInfo SearchItemByGuid(ClientEnum client, string itemGuid);
所以问题是,我怎样才能以良好的方式处理枚举类型......?
想法:
- 再制作一个接口,但使用字符串而不是枚举...
- 实现 IParameterInspector(将字符串解析为枚举)
- 查询字符串转换器?
有任何想法吗?
更新:
看来我找到了解决方案:所以...
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 ();
}
}