Наследование List для реализации коллекций - плохая идея?

Однажды я прочитал статью Имаара Spaanjars о том, как создавать трехуровневые приложения. ( http: //imar.spaanjaars. com / 416 / building-layered-web-applications-with-microsoft-aspnet-20-part-1 ), который некоторое время составлял основу моего программирования.

Таким образом, я реализую коллекции, как он, путем наследования List . Поэтому, если у меня есть класс с именем Employee, для реализации коллекции у меня также будет класс Employees, как показано ниже.

class Employee
{
   int EmpID {get;set;}
   string EmpName {get;set;}  

}

class Employees : List
{
   public Employees(){}
}

Я никогда не сомневался в этом, поскольку он работал за меня. Но теперь, когда я начал пробовать несколько вещей, я не уверен, что это правильный подход.

например, если я хочу получить подмножество от сотрудников, такое как

 Employees newEmployees = (Employees) AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);

Это вызывает System.InvalidCastException. Однако, если я использую следующее, проблем нет.

List newEmployees = AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);

Итак, как мне реализовать сотрудников, чтобы мне не приходилось явно использовать List в моем DAL или BLL? Или, может быть, как мне избавиться от InvalidCastexception?

12
задан Marc Gravell 20 September 2010 в 05:45
поделиться