Как реализовать сортировку в производном классе?
От: SteeLHeaD  
Дата: 10.11.10 10:37
Оценка:
У меня есть базовый класс Person, в который я не могу вмешаться.
Нужна сортировка списка элементов этого класса (к примеру, по дню рождения)
Наследуюсь:

public class EPerson : Person, IComparable


Добавляю в класс EPerson метод для сравнения:

  public class EPerson : Person, IComparable
  {
    public int CompareTo(object obj)
    {
      return ((Note)obj).BirthDate.CompareTo(this.BirthDate);
    }
  }

Хочу дальне написать так:

private void button1_Click(object sender, EventArgs e)
    {
      // получаю исходный список
      PersonRepository personRep = new PersonRepository();
      List<Person> persons = personRep.GetAll();
      // Делаю из них "сравнимых" друг с другом персон:      
      List<EPerson> epersons = new List<EPerson>();
      foreach (Person p in persons)
      {
        EPerson ep = new EPerson();
        ep = (EPerson)p;
        epersons.Add(ep);
      }
      // сортирую новый список:
      epersons.Sort();
    }

Ошибка InvalidCastException подстерегает меня на строке

ep = (EPerson)p;

Как правильно сделать то, что я хотел сделать? Имеется в виду — можно ли присвоить элемент базового класса элементу производного без утомительного перечисления всех полей?
Буду благодарен за конструктивные советы, только не надо кидать в меня "умными" словами типа "напиши конструктор копирования" — приведите пример, пожалуйста.
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.