Однажды я прочитал статью Imaar Spaanjars о том, как создавать трехуровневые приложения. (http://imar.spaanjaars.com/416/building-layered-web-applications-with-microsoft-aspnet-20-part-1), который некоторое время лежал в основе моего кодирования.
Таким образом, я реализую коллекции так, как он это сделал, наследуя List<T>
. Поэтому, если у меня есть класс с именем Employee, для реализации коллекции у меня также будет класс Employees, как показано ниже.
class Employee
{
int EmpID {get;set;}
string EmpName {get;set;}
}
class Employees : List<Employee>
{
public Employees(){}
}
Я никогда не подвергал сомнению это, поскольку это сделало работу для меня. Но теперь, когда я начал пробовать несколько вещей, я не уверен, что это правильный подход.
например. если я хочу получить подмножество сотрудников, например
Employees newEmployees = (Employees) AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);
Это вызывает исключение System.InvalidCastException. Однако, если я использую следующее, то это не проблема.
List<Employee> newEmployees = AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);
Итак, как мне реализовать Employees, чтобы мне не приходилось явно использовать List<Employee>
в моем DAL или BLL? Или, может быть, как мне избавиться от InvalidCastexception?