Als in .NET 4.5 IReadOnlyList<T>
eingeführt wurde, dachte ich für einen Moment, dass der fehlende Teil des Puzzles schließlich eingefügt wurde: eine Möglichkeit, eine echte readonly indexierbare Schnittstelle zu übergeben, wo ich vorher meine eigenen schreibgeschützten Schnittstellen verwenden musste und erstellen Sie Wrapper-Klassen um alles.Warum wird `IList <T>` nicht von `IReadOnlyList <T>` übernommen?
ich die Schnittstelle erwartet innerhalb der „natürlichen“ Hierarchie platziert werden, die im Idealfall wäre:
IEnumerable<T>
.GetEnumerator()
-> IReadOnlyCollection<T> : IEnumerable<T>
.Count
-> IReadOnlyList<T> : IReadOnlyCollection<T>
.Item[...]
-> IList<T> : IReadOnlyList<T>
.Add(...)
.Clear()
.Contains(...)
(etc)
Aber, wie sich herausstellt, IList<T>
erbt nicht von IReadOnlyList<T>
.
Gibt es einen Grund dafür?
Wie bereits erwähnt, wurde 'IReadonlyList' in .NET4.5 eingeführt, was viel später' IList' zu .Net hinzugefügt wurde. – HimBromBeere
Überprüfen Sie dies: https://social.msdn.microsoft.com/Forums/vstudio/en-US/b4fb991a-3f5c-4923-93d4-7cd5c004f859/new-interfaces-ireadonlylist-and-ireadonlydictionary?forum=netfxbcl –
'List <> 'implementiert' IList <> 'aber es ist nicht schreibgeschützt, also warum sollte es' IReadOnlyList <> '? –