У меня есть 2 общих класса: класс BaseComponent
и класс BaseManager
.
Они оба абстрактны и предназначены для конкретизации.
public abstract class BaseManager<T> where T : BaseComponent<?>
public abstract class BaseComponent<T> where T : BaseManager<?>
BaseManager
имеет список BaseComponents, поэтому я хочу сделать его универсальным, поэтому в PhysicsManager: BaseManager
будет список PhysicsComponents
.
Я хочу (или, скорее, думаю, что мне нужно) BaseComponent
быть универсальным, потому что я хочу, чтобы классы, производные от BaseComponent
, были «прикреплены» к их соответствующему менеджеру. В идеале я не хочу писать конструктор для каждого производного компонента, чтобы я мог добавить его в переданный конкретный класс менеджера. В идеале я хочу иметь конструктор, который принимает абстрактный класс BaseManager
.
Как я могу управлять такой циклической зависимостью?