Unity добавили новый Package в их Package manager под названием Game Foundation. Я захотел его изучить и наткнулся на интересный момент, который я не знаю. Я бы хотел чтобы мне его объяснили(дали ссылки на ресурсы, которые могут более подробно объяснить).
Собственно фрагмент кода(несколько классов):
public abstract class BaseCollection<T1, T2, T3, T4> : GameItem
where T1 : BaseCollectionDefinition<T1, T2, T3, T4>
where T2 : BaseCollection<T1, T2, T3, T4>
where T3 : BaseItemDefinition<T1, T2, T3, T4>
where T4 : BaseItem<T1, T2, T3, T4>
{ ... }
public abstract class BaseCollectionDefinition<T1, T2, T3, T4> : GameItemDefinition
where T1 : BaseCollectionDefinition<T1, T2, T3, T4>
where T2 : BaseCollection<T1, T2, T3, T4>
where T3 : BaseItemDefinition<T1, T2, T3, T4>
where T4 : BaseItem<T1, T2, T3, T4>
{ ... }
public abstract class BaseItemDefinition<T1, T2, T3, T4> : GameItemDefinition
where T1 : BaseCollectionDefinition<T1, T2, T3, T4>
where T2 : BaseCollection<T1, T2, T3, T4>
where T3 : BaseItemDefinition<T1, T2, T3, T4>
where T4 : BaseItem<T1, T2, T3, T4>
{ ... }
public abstract class BaseItem<T1, T2, T3, T4> : GameItem
where T1 : BaseCollectionDefinition<T1, T2, T3, T4>
where T2 : BaseCollection<T1, T2, T3, T4>
where T3 : BaseItemDefinition<T1, T2, T3, T4>
where T4 : BaseItem<T1, T2, T3, T4>
{ ... }
Для чего нужно указывать остальные классы в классе BaseCollection?
GameItem - обычный класс, не наследуется. GameItemDefinition - ScriptableObject
Вы имеете в виду вот это?
where T1 : BaseCollectionDefinition<T1, T2, T3, T4>
where T2 : BaseCollection<T1, T2, T3, T4>
where T3 : BaseItemDefinition<T1, T2, T3, T4>
where T4 : BaseItem<T1, T2, T3, T4>
Это так называемые ограничения.
BaseCollection<T1, T2, T3, T4> - имеем класс-обобщение , где T1, T2 etc - объекты удовлетворяющие ограничениям записанным в блоках where - в данном случае они должны быть экземплярами наследниками указанных классов.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости