Параметры кругового универсального типа

У меня есть 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 .

Как я могу управлять такой циклической зависимостью?

19
задан George Duckett 15 November 2011 в 15:33
поделиться