Наследование различных конкретных реализаций абстрактного класса

Есть базовый абстрактный класс Subj

public abstract class Subj
{
    public IName name;
    public string ID { get; set; }
    //иные члены класса
}

От него наследуют классы Company и Person реализующие его интерфейсы:

public class Company : Subj
{
    //Реализует интерфейс IName
    public new  IName name = new NameCompany();
}

public class Person : Subj
{
    //Реализует интерфейс IName
    public new IName name = new NamePerson();
}

Есть также класс Client, Наследующий от Subj, добавляющий функционал

public class Client : Subj
{
    //Функционал клиента
    public string foldername()
    {
    //Возвращает имя папки
    }
    //Лист - Перечень судебных дел
    private List<LCase> _cases = new List<LCase> { };
}

Идея в том, что Subj должен быть обязательно реализован либо как Company, либо как Person и потом при необходимости расширен функционалом Client с сохранением публичных членов. Я знаю, множественное наследование не допускается, как лучше всего реализовать Client через Company и Person?


Ответы (0 шт):