List<T> is broken

time to read 1 min | 122 words

It is broken because it is a basic framework class that doesn't have a single virtual method. I want to have a list where a delegate is called when an item is added or removed, but I can't do that, since this means that I need to override the Add()/Remove() methods. I need to create a completely new class, implement the entire IList<T> functionality, to get such a basic behavior.

Yes, I know about Collection<T>, but this isn't acceptable. Why have two seperate classes? If I want a custom collection with ForEach() method on it, I need to do it myself. This is no way to write an extensible framework. They might as well have sealed the class.