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?
No answers yet.
Faça login para deixar uma resposta