Иерархия наследования с переопределенными типами возвращаемых значений ⇐ C#
Иерархия наследования с переопределенными типами возвращаемых значений
Могу ли я как-нибудь навести порядок в этой иерархии? Это кажется слишком запутанным.
Я пытаюсь написать это так:
[*]IDog может переопределять GetParameters() с помощью IDogParameters [*]ParametersChanged определяется один раз в базовом классе Animal [*]Корнем иерархии является IAnimal, который я могу использовать без дженериков. IParameters общедоступного интерфейса { } общедоступный интерфейс IDogParameters: IParameters {} общедоступный интерфейс IAnimal { событие EventHandler? ПараметрыИзменены; IP-параметры GetParameters(); } общедоступный интерфейс IAnimal: IAnimal, где T: IParameters { новый Т GetParameters(); } общедоступный абстрактный класс Animal: IAnimal, где T: IParameters { публичное событие EventHandler? ПараметрыИзменены; публичный абстрактный T GetParameters(); IParameters IAnimal.GetParameters() => GetParameters(); } общедоступный интерфейс IDog: IAnimal { новые IDogParameters GetParameters(); } общедоступный класс Dog: Animal, IDog { общедоступное переопределение IDogParameters GetParameters() => null; }
Могу ли я как-нибудь навести порядок в этой иерархии? Это кажется слишком запутанным.
Я пытаюсь написать это так:
[*]IDog может переопределять GetParameters() с помощью IDogParameters [*]ParametersChanged определяется один раз в базовом классе Animal [*]Корнем иерархии является IAnimal, который я могу использовать без дженериков. IParameters общедоступного интерфейса { } общедоступный интерфейс IDogParameters: IParameters {} общедоступный интерфейс IAnimal { событие EventHandler? ПараметрыИзменены; IP-параметры GetParameters(); } общедоступный интерфейс IAnimal: IAnimal, где T: IParameters { новый Т GetParameters(); } общедоступный абстрактный класс Animal: IAnimal, где T: IParameters { публичное событие EventHandler? ПараметрыИзменены; публичный абстрактный T GetParameters(); IParameters IAnimal.GetParameters() => GetParameters(); } общедоступный интерфейс IDog: IAnimal { новые IDogParameters GetParameters(); } общедоступный класс Dog: Animal, IDog { общедоступное переопределение IDogParameters GetParameters() => null; }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение