Ответить на Ваш комментарий к моему другому ответу:
можно сделать подстановочный параметр в конце querystring как
[WebGet(ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "SomeRequest?qs1={*qs1}")]
XElement SomeRequest2(string qs1);
Этот способ, которым qs1 строковый параметр будет целыми сырыми данными querystring после qs1 =, Вы могли затем проанализировать это вручную в Вашем коде.
QueryStringConverter полагается на форматирование querystring, настолько делающего что-то точно, как Вы хотите, не возможно, возможно не переписывая QueryStringConverter вместо небольших переопределений, которые мы сделали в другом ответе.
Из MSDN:
сегменты Wildcard должны следовать следующим правилам:
Если ваши данные велики, то лучше избегать циклов. Вы можете создать свою собственную пользовательскую функцию, например, так:
$array = array('first'=>'111', 'second'=>'222', 'third'=>'333');
function previous($key, $array) {
$keysArray = array_keys($array);
$keyNumber = array_search($key, $keysArray);
if ($keyNumber === 0) {
$keyNumber = count($array);
}
return $array[$keysArray[$keyNumber - 1]];
}
var_dump(previous("second", $array));
Обратите внимание, что если вы предоставите первый ключ, он вернет последнее значение, как циклический массив. Вы можете справиться с этим так, как вам нравится.
Немного подправив, вы также можете обобщить его, чтобы получить следующие значения.
Что касается того, почему prev
не работает, потому что он не используется для этой цели. Он просто устанавливает внутренний указатель массива на единицу позади, с точностью до next
Надеюсь, это поможет