I’m trying to derive from List and selectively turn the IsReadOnly property on and off. I was hoping that the Add/Remove/[] functions would honor this property, but they don’t.
What’s the right way of doing this?
My derived class has some additional properties, so I can’t unfortunately just wrap the list in ReadOnlyCollection.
Use encapsulation instead of inheritance in this case.
You should just make your class implement IList<T>, and have a private List<T> variable.
You can pass through any functions you wish, but also can completely override them, change behavior, etc. This gives you complete control (at the expense of having many methods that does nothing but call this.List.method(…) ).
In general, I don’t think it’s a good idea to inherit from the BCL collection classes in any case. I prefer to make them an implementation detail internal in my class.