Re[4]: Круговые ссылки в генериках
От: gamburger  
Дата: 02.02.18 19:16
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, gamburger, Вы писали:



G>>Я думаю, что должно быть возможно задать такие настройки генериков и констрейнтов, чтобы все строго типизировалось и при этом компилилось, если только сишарп сам не является преградой, потому что с точки зрения логики я не вижу тут проблем.


S>Именно с тз логики и проблема, у Вас по сути рекурсивное определение -- абстрактный класс зависит от интерфейса, интерфейс зависит от асбтрактного класса.


В случае циклич. зависимости
class Q1 : Q2
{ }
class Q2 : Q1
{ }

компилер пишет:
Циклическая зависимость базового класса включает "Q2" и "Q1"

А в моем случае он пишет совсем не то.
Но даже если предположить, что проблема именно в рекурсии, то тогда как реализовать схему для такой задачи?
Есть Хищник, Травоядное, Растение.
Хищник и Травоядное должны иметь список жертв, т.к. проперти общее, то его выносим в базовый класс Животное, и нужно, чтобы у Хищника жертвами могли быть только Травоядные, а у Травоядных жертвами могли быть только Растения.
Травоядные и Растения могут быть одинаково съедены соответвенно Хищниками и Травоядными, т.е. нужен общий метод BeEatenBy(Animal animal). При этом чтобы у Травоядного этот метод был таким BeEatenBy(Хищник animal), а у Растения таким BeEatenBy(Травоядное animal) .
Как сделать такую схему?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.