Несоответствие между типами для добавления и извлечения значений заголовков для IHeaderDictionary в Microsoft.Owin
В приложении OWIN я делаю, я работаю с его Request.Headers
свойство, которое является IHeaderDictionary
(оболочка для owin.RequestHeaders и owin.ResponseHeaders, которая реализует IReadableStringCollection, Dictionary<string, string[]>, Collection<KeyValuePair<string, string[]>>, IEnumerable<KeyValuePair<string, string[]>>, IEnumerable
).
Для меня наиболее разумно думать об этом как о Dictionary<string, string[]>
, Когда я добавляю что-то в этот словарь, мне нужно string
ключ и string[]
значение, которое имеет смысл. Так что я бы сделал что-то вроде:
string key = "MyKey";
string[] value = new string[] {someString};
this.Response.Headers.Add(key, value);
Тем не менее, когда я пытаюсь получить значения из этого словаря, я обнаружил, что он возвращает string
не string[]
, Так что если я сделаю:
string[] value = this.Response.Headers[key];
Я получу ошибку компилятора, говорящую "не могу неявно преобразовать тип" строка "в" строку [] ". Вместо этого он работает, когда я делаю:
string value = this.Response.Headers[key];
Боюсь, я упускаю что-то очень очевидное, но я все равно решил спросить.
Обновление 1
Я нашел это объявление GitHub, чтобы заменить string[]
с StringValues
, что кажется актуальным, но я не знаю, как именно это решает проблему.