У меня есть следующие классы:
class Person
{
public string Name { get; set; }
}
class Employee : Person
{
public int Salary { get; set; }
}
class Company
{
public IList<Person> PeopleWhoAreNotEmployees { get; set; }
}
Персона и сотрудник отображаются с использованием стратегии "таблица-на-класс-иерархия".
Когда я получаю коллекцию PeopleWhoAreNotEmployees, я хочу, чтобы она содержала только элементы Person, а НЕ Employees.
Как я могу (свободно) настроить коллекцию для получения только элементов суперкласса?
Я думаю, что это как-то связано со свойством Полиморфизм, но я не мог понять, как это сделать.
спасибо,
Jhonny
EDIT:
После обсуждения с Джейми, я чувствую, что мне нужно уточнить, что дело здесь на самом деле не Персона и Сотрудник, а скорее как Сотрудник и Исторический сотрудник.
То есть, когда сотрудник «умирает», он на самом деле не удаляется,
, но он становится HistoricalEmployee (с еще несколькими атрибутами, такими как дата увольнения и т.д.).
Очевидно, что со временем количество HistoricalEmployee превысит количество Employees по величинам,
, поэтому я не могу выбрать всех HistoricalEmployee, когда мне нужны только текущие Employees.
Извините за двусмысленность оригинального вопроса ...
J
P.S.
Я не изменил первоначальный вопрос, так как это сделало бы ответ неуместным.
доступна новая версия этого вопроса здесь