私は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);
問題は、どうすれば列挙型を適切に処理できるかということです....?
アイデア:
- もう1つのインターフェイスを作成しますが、列挙型ではなく文字列を使用します...
- IParameterInspector の実装 (文字列を列挙型に解析)
- QueryStringConverter?
何か案は?
アップデート:
解決策を見つけたようです:そう...
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 ();
}
}