Я бы сказал, что существенным недостатком этого подхода является то, что вы не можете использовать LINQ в своей пользовательской коллекции, если не внедрили IEnumerable
. Лучшим подходом может быть создание подкласса и принудительное использование новой реализации методов, например:
public class FooList<T> : List<T>
{
public new void Add(T item)
{
// any FooList-specific logic regarding adding items
base.Add(item);
}
}
Что касается ключевого слова readonly
, это означает, что вы можете установить переменную только в конструкторе.