Объясните смысл данного участка кода

253
06 октября 2021, 20:40

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

Answer 1

Вы имеете в виду вот это?

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 - в данном случае они должны быть экземплярами наследниками указанных классов.

READ ALSO
C# прогресс нескольких загрузок

C# прогресс нескольких загрузок

Разрабатываемая программа должна уметь асинхронно скачивать до трех картинок включительноВсе работает на WebClient

389
Движение объекта Unity

Движение объекта Unity

помогите разобратьсяМне нужно, чтобы объект двигался в то место куда было осуществлено нажатие на экран, вместо этого объект летит куда ему...

98
1C Comconnector - Номер документа

1C Comconnector - Номер документа

Подключаюсь из C# через comconnector к 1С базе и создаю новый ПриходныйКассовыйОрдер и вроде бы все отлично, но вот номер документа присваеваемый...

96
Последовательный спаун блоков пути и рандомный спаун видов препятствий внутри них

Последовательный спаун блоков пути и рандомный спаун видов препятствий внутри них

Как это реализовать? Приложил скрипт, который сейчас рандомно генерирует блоки БЕЗ препятствий

154