Как я могу заполнить 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" } } );
Другие вопросы по тегам