Herdar a lista <T> para implementar coleções é uma má ideia?
Certa vez, li um artigo de Imaar Spaanjars sobre como criar aplicativos de três camadas. (http://imar.spaanjaars.com/416/building-layered-web-applications-with-microsoft-aspnet-20-part-1), que formou a base da minha codificação há um tempo.
Assim, eu implemento coleções como ele fez, herdando umList<T>
. Portanto, se eu tiver uma classe chamada Employee, para implementar uma coleção, também terei uma classe Employees como abaixo.
class Employee
{
int EmpID {get;set;}
string EmpName {get;set;}
}
class Employees : List<Employee>
{
public Employees(){}
}
Eu realmente nunca questionei isso, pois fez o trabalho para mim. Mas agora que comecei a experimentar algumas coisas, não tenho certeza se essa é a abordagem correta.
por exemplo. se eu quiser obter um subconjunto de Funcionários, como
Employees newEmployees = (Employees) AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);
Isso lança um System.InvalidCastException. No entanto, se eu usar o seguinte, não haverá problema.
List<Employee> newEmployees = AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);
Então, como eu implanto Funcionários para que eu não precise usar explicitamenteList<Employee>
no meu DAL ou BLL? Ou talvez como me livrar da InvalidCastexception?