如何使用UriTemplate在一个名称中设置两个值?

时间:2009-12-05 16:16:58

标签: c# wcf

我创建了这段代码:

[OperationContract]
[WebGet(UriTemplate = "detect?v=1.0&q={q}", BodyStyle = WebMessageBodyStyle.Bare)]
DetectLanguage GetDetectLanguage(string q);

[OperationContract]
[WebGet(UriTemplate = "translate?v=1.0&q={query}&(langpair={from}|{to})", BodyStyle = WebMessageBodyStyle.Bare)]
TranslateLanguage GetTranslateLanguage(string query, string from, string to);

但是我收到了这个错误:

  

UriTemplate   'translate?v=1.0&q={query}&(langpair={from}|{to})'无效;每个部分   查询字符串必须是表单   'name=value',当价值不能是   复合段。见   UriTemplate的文档了解更多信息   的信息。

我知道(name=value)。我如何获得Name={value1}|{value2}?有可能吗?

或任何其他解决方案!

1 个答案:

答案 0 :(得分:0)

正如错误消息所解释的那样,您不能拥有langpair={from}|{to},因为这显然是一个复合值。

您可以使用表单

langpair={langpair}

然后在您的方法中使用String.Split来获取这两部分:

string langpair = "en|fr";
string[] parts = langpair.Split('|');
string from = parts[0];  // "en"
string to = parts[1];    // "fr"