Преобразование вложенного словаря в IReadOnlyDictionary
Я пытаюсь выдатьIReadOnly
ссылки на внутренниеCollection
объекты. Это работает хорошо в большинстве случаев, но не, если я хочу преобразовать словарь, содержащий коллекцию, вIReadOnlyDictionary
содержащийIReadOnlyCollection
.
Вот пример кода:
var list = new List<int>();
IReadOnlyList<int> listReference = list; //works;
var dictionary = new Dictionary<int, int>();
IReadOnlyDictionary<int, int> dictionaryReference = dictionary; //works
var nestedList = new List<List<int>>();
IReadOnlyList<IReadOnlyList<int>> nestedReadOnlyListReference = nestedList; //works
var nestedDictionary = new Dictionary<int, List<int>>();
//IReadOnlyDictionary<int, IReadOnlyList<int>> nestedReadOnlyDictionaryReference = nestedDictionary; //does not work, can not implicitly convert
//current workaround
var nestedDictionaryReferenceHelper = new Dictionary<int, IReadOnlyList<int>>();
foreach (var kvpNestedDictionary in nestedDictionary)
{
nestedDictionaryReferenceHelper.Add(kvpNestedDictionary.Key, (IReadOnlyList<int>)kvpNestedDictionary.Value);
}
IReadOnlyDictionary<int, IReadOnlyList<int>> nestedReadOnlyDictionaryReference = nestedDictionaryReferenceHelper; //works, but is only a reference to the internal List, not to the dictionary itself
Обходной путь довольно уродливый, так как он требует дополнительной памяти и требует ручного обновления каждый раз, когда значенияnestedDictionary
менять.
Есть ли простой способ конвертировать такие вложенные словари?