В этом случае используйте инкапсуляцию вместо наследования.
Вы должны просто заставить свой класс реализовать IList и иметь личную переменную List .
Вы можете проходить через любые функции, которые пожелаете, но также можете полностью переопределить их, изменить поведение и т. Д. Это дает вам полный контроль (за счет наличия множества методов, которые ничего не делают, кроме как вызывают this.List.method (.. .)).
В общем, я не думаю, что в любом случае хорошая идея наследовать от классов коллекции BCL. Я предпочитаю делать их детали реализации внутренними в моем классе.