Convertendo um dicionário aninhado em IReadOnlyDictionary

Eu estou tentando dar umaIReadOnly-referências a internaCollection objetos. Isso funciona bem na maioria dos casos, mas não se eu quiser converter um dicionário que contém uma coleção em umIReadOnlyDictionary contendo umIReadOnlyCollection.

Aqui está um exemplo de código:

    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

A solução alternativa é bastante feia, pois precisa de memória adicional e precisa de atualização manual sempre que os valores denestedDictionary mudança.

Existe alguma maneira simples de converter esses dicionários aninhados?

questionAnswers(3)

yourAnswerToTheQuestion