Преобразование вложенного словаря в 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 менять.

Есть ли простой способ конвертировать такие вложенные словари?

Ответы на вопрос(3)

Ваш ответ на вопрос