Avatar ·

Por que não se deve herdar sua classe de List<T> em C#?

Olá a todos! Sou um desenvolvedor C# iniciante e me deparei com um problema de design. Estou escrevendo um aplicativo para gerenciar uma biblioteca. Tenho uma classe `Book` (livro) e quero criar uma classe `Library` que contenha uma lista de livros e também tenha seus próprios métodos, como `FindByAuthor()` ou `GetTotalPages()`. Inicialmente, pensei que o mais lógico seria simplesmente herdar de `List`: ```csharp public class Library : List { public List FindByAuthor(string author) { return this.Where(b => b.Author == author).ToList(); } public int GetTotalPages() { return this.Sum(b => b.Pages); } } ``` Parece que tudo funciona, mas li no Stack Overflow que isso é uma má prática. As pessoas escrevem que "não se deve herdar de List". Mas não entendo muito bem por quê? Afinal, é tão conveniente — você já obtém todos os métodos da lista (Add, Remove, indexador, etc.). Meu código fica curto e bonito. Vocês podem explicar com exemplos por que isso é ruim?