У меня есть два абстрактных классов Бизнес & Лицо. Проблема в том, что у меня есть тип клиента, который может быть либо Бизнесом, либо Лицом. Есть ли способ моделировать это, чтобы у меня не было классов CustomerBusiness и CustomerPerson? Множественное наследование не является вариантом, так как это C#. Я так долго смотрел на это, я не вижу леса для деревьев.Попытка избежать нескольких подтипов в структуре классов
public abstract class Business {
public string Name { get; set; }
}
public abstract class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
public string MiddleName { get; set; }
public DateTime? BirthDate { get; set; }
public string Comments { get; set; }
}
public class CustomerBusiness : Business, CustomerRoles {
public bool BillTo { get; set; }
public bool ShipTo { get; set; }
public bool DeliverTo { get; set; }
public EntityType Type { get; set; }
}
public class CustomerPerson : Person, CustomerRoles {
public bool BillTo { get; set; }
public bool ShipTo { get; set; }
public bool DeliverTo { get; set; }
public EntityType Type { get; set; }
}
public interface CustomerRoles {
bool BillTo { get; set; }
bool ShipTo { get; set; }
bool DeliverTo { get; set; }
}
Спасибо Эд, я начинаю видеть вашу мысль. Мне нужно уточнить, что я думаю, что мне нужно, чтобы классы Business и Person были абстрактными, поскольку будут другие классы, которые всегда будут иметь свойства Business и Person. Примеры: Поставщик, Отдел, Отдел и т. Д. – Chris
Я не уверен, что смогу использовать этот метод из-за других ограничений (не в моем первоначальном вопросе) в этом проекте, но это решение - лучший ответ I До сих пор. Спасибо, Ed. – Chris