Привести словарь <Key, Value> к IReadOnlyDictionary <Key, IValue>? - PullRequest
1 голос
/ 10 июля 2019

Мы можем легко сделать это:

List<Value> list;
IReadOnlyList<IValue> List => list;

Но как мы можем сделать то же самое с IReadOnlyDictionary?

Dictionary<Key, Value> dict;
IReadOnlyDictionary<Key, IValue> Dict => dic; //impossible

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Вы не можете, однако за счет выделений и перефразирования вы можете проецировать его

IReadOnlyDictionary<string, IValue> Dict 
   => dict.ToDictionary(x => x.Key, x => (IValue)x.Value);

Хотя вам, возможно, придется переосмыслить вашу проблему

2 голосов
/ 10 июля 2019

Это потому, что IReadOnlyList является ковариантным:

public interface IReadOnlyList<out T> {...}

, тогда как IReadOnlyDictionary не является:

public interface IReadOnlyDictionary<TKey,TValue> {...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...