У меня есть вопрос дизайна.Я представлю гипотетическую ситуацию.У меня есть пара интерфейсов, необходимых моему приложению, чтобы сделать объект пригодным для использования.Допустим, они;
1. IAdult.cs, with two properties
a. Age
b. LicenceNo.
2. IEducated.cs, with two methods
a. Read()
b. Write()
Предположим, что реализация этих интерфейсов в большинстве случаев будет оставаться одинаковой.Поэтому, если бы нам пришлось реализовать абстрактный класс из этих интерфейсов, мы могли бы просто создать класс, скажем, абстрактный класс EducatedAdult {}.Теперь мы определяем три различных класса с их соответствующими наследованиями и набором соответствующих свойств;
1. Carpenter.cs (derives from class A)
2. Plumber.cs (derives from class B)
3. Programmer.cs (derives from class C)
Здесь классы A, B, C являются частью некоторых внешних библиотек, которые я не могу редактировать.Теперь, чтобы сделать эти объекты пригодными для использования в Программе, им необходимо реализовать указанные выше интерфейсы.Таким образом, проблема заключается в том, что для каждого из этих классов мне придется явно реализовать вышеуказанные интерфейсы.Может ли быть лучший дизайн, где мне не нужно реализовывать интерфейсы избыточно во всех классах.Это могло бы быть решением, если бы это было возможно;
Class EducatedAdult<t>: t, IAdult, IEducated { <implementation of interfaces> }
И позже, возможно, я мог бы просто инициализировать свои производные классы, как;Не то чтобы это было бы идеальным решением, потому что открытый интерфейс объекта carpenter по-прежнему не должен включать членов моего интерфейса (без обязательного приведения).Но тогда какой дизайн может быть наиболее подходящим?