Sembra una scelta di design strana, perché un Dictionary e un ImmutableDictionary sono molto diversi dal punto di vista della scrittura. (In termini di lettura, entrambi implementano IReadOnlyDictionary , che va bene *)
In effetti, l'attuale implementazione di IDictionary<TKey, TValue>.Add() nella classe ImmutableDictionary genera un NotSupportedException (vedi qui ).
Quindi, qual era il punto nel fare questo? Se un metodo restituisce un IDictionary che è in effetti un ImmutableDictionary , avrai alcuni problemi durante l'aggiunta di elementi, ad esempio.
* tranne per il nome dell'interfaccia, che è oggetto di dibattito