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?