Как быть если при перегрузке нужно изменить тип свойства в производном классе? - C#
Формулировка задачи:
Здравствуйте, предположим, есть обычный мяч и коробка для него, потом появился специфичный мяч для работы с которым нужно расширить обычную коробку.
Я знаю , что c# не поддерживает вариативность, но как тогда решить подобную задачу и сохранить типобезапосность?
class Ball { } class SpecificBall : Ball { } class BallBox { public virtual Ball Ball { get; set; } public virtual void Update() { ... логика для обычного мяча } ... } class SpecificBallBox : BallBox { public override SpecificBall Ball { get; set; } /// ??? public virtual void Update() { ... логика для специфичного мяча } ... }
Решение задачи: «Как быть если при перегрузке нужно изменить тип свойства в производном классе?»
textual
Листинг программы
class Ball { ... } class SpecificBall : Ball { ... } class BallContainer<TBall> where TBall : Ball { public TBall Ball { get; set; } public virtual void Update() {} } class SimpleBallBox : BallContainer<Ball> { ... // работаем с обычным мячом - реализация по-умолчанию } class SpecificBallBox : BallContainer<SpecificBall> { public override void Update() { // определяем специфическую реализацию } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д