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