Как я могу заполнить NameValueCollection через параметр в общем методе?
У меня есть сегмент кода:
var requestMock = new Mock<HttpRequestBase>();
var queryString = new NameValueCollection();
queryString["abc"] = "123";
queryString["qwe"] = "456";
queryString["yui"] = "678";
...
requestMock.SetupGet(rqst => rqst.QueryString).Returns(queryString);
Теперь я хотел бы, чтобы вышеуказанный сегмент был записан как метод:
var requestMock = GetRequestMock(???);
Я намерен отправить ключ / значения строки запроса, которые могут быть чем угодно. И количество пар k/v также может быть любым.
public Mock<HttpRequestBase> GetRequestMock(???)
{
var requestMock = new Mock<HttpRequestBase>();
....
requestMock.SetupGet(rqst => rqst.QueryString).Returns(queryString);
return requestMock;
}
Каков был бы лучший способ сделать это эффективно и просто?
1 ответ
Решение
Одним из способов было бы использовать Dictionary
:
public Mock<HttpRequestBase> GetRequestMock(Dictionary<string, object> queryParms)
{
var queryString = new NameValueCollection();
foreach (KeyValuePair<string, object> kvp in queryParms)
{
queryString[kvp.Key] = Convert.ToString(kvp.Value);
}
...
}
и тогда вы можете назвать это так:
GetRequestMock(new Dictionary<string, object> { { "abc", "123" }, { "qwe", "456" } } );