У меня есть 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.
Как я могу управлять такой циклической зависимостью?