Как я могу преобразовать NameValueCollection в KeyValuePair - PullRequest
0 голосов
/ 21 ноября 2018

Я хочу преобразовать NameValueCollection в KeyValuePair .Есть ли способ сделать это легко для всего лишь одного значения в NameValueCollection?

У меня есть это прямо сейчас, но это кажется многословным:

private KeyValuePair<string, string> GetEtagHeader(NameValueCollection collection)
{
    var etagValue = collection.Get(HttpRequestHeader.IfMatch.ToString());

    return new KeyValuePair<string, string>(HttpRequestHeader.IfMatch.ToString(), etagValue);
}

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Было бы менее многословно, если вы поместите HttpRequestHeader.IfMatch.ToString() в переменную temp и вместо этого вставите временную переменную etagValue:

private KeyValuePair<string, string> GetEtagHeader(NameValueCollection collection)
{
    string key = HttpRequestHeader.IfMatch.ToString();
    return new KeyValuePair<string, string>(key, collection.Get(key));
}
0 голосов
/ 21 ноября 2018

Если бы это был я, я бы определил метод расширения, подобный этому:

public static class ExtensionMethods
{
    static public KeyValuePair<string,string> GetPair(this NameValueCollection source, string key)
    {
        return new KeyValuePair<string, string>
        (
            key,
            source.Get(key)
        );
    }
}

Тогда вы можете просто написать свой оригинальный код следующим образом:

private KeyValuePair<string, string> GetEtagHeader(NameValueCollection collection)
{
    return collection.GetPair(HttpRequestHeader.IfMatch.ToString());
}
0 голосов
/ 21 ноября 2018

Я не уверен, насколько короче вы можете получить его.

Одна из возможностей - поставить Get, где вы создаете KeyValuePair

private static KeyValuePair<string, string> GetEtagHeader(NameValueCollection collection)
{
    string key = HttpRequestHeader.IfMatch.ToString();
    return new KeyValuePair(key, collection.Get(key));
}

Это должно служить вашему делу.Я бы пошел дальше и разделил бы его на 2 метода - один для вашего конкретного случая и один общий помощник.

private static KeyValuePair<string, string> GetEtagHeader(NameValueCollection collection)
{
    return ToKeyValuePair(HttpRequestHeader.IfMatch.ToString(), collection);
}

private static KeyValuePair<string, string> ToKeyValuePair(string key, NameValueCollection collection)
{
    return new KeyValuePair(key, collection.Get(key));
}
...