У меня есть следующие классы:
Defect
- представляет тип данных, которые можно найти в базе данных
FilterQuery
- предоставляет способ запроса базы данных путем установки простых логических фильтров
Оба Defect
и FilterQuery
реализуют один и тот же интерфейс: IDefectProperties
. Этот интерфейс определяет определенные поля, которые находятся в базе данных. Различные классы имеют методы, которые возвращают списки Defect
экземпляров. При FilterQuery
вы указываете некоторые фильтры для конкретных свойств, реализованных как часть IDefectProperties
, а затем запускаете запрос и получаете список Defect
экземпляров.
Моя проблема в том, что в итоге я реализовал некоторые свойства точно так же в FilterQuery
и Defect
. Эти два по сути разные классы, они просто имеют одни и те же свойства. Например:
public DateTime SubmitDateAsDate
{
get { return DateTime.Parse(SubmitDate); }
set { SubmitDate = value.ToString(); }
}
Это свойство требуется IDefectProperties
, которое зависит от другого свойства, SubmitDate
, которое возвращает string
вместо DateTime
. Теперь SubmitDate
реализован по-разному в Defect
и FilterQuery
, но SubmitDateAsDate
точно так же. Есть ли способ, которым я могу определить SubmitDateAsDate
только в одном месте, но оба Defect
и FilterQuery
предоставляют его как свойство? FilterQuery
и Defect
уже наследуются от двух разных классов, и, по-моему, для них не имеет смысла делить предка. Я также открыт для предложений относительно моего дизайна.