我有两个通用类,一个是 BaseComponent
类,另一个是 BaseManager
类。
它们都是抽象类,旨在变得具体化。
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
类。
如何管理这种循环依赖?
BaseComponent
非泛型。让它依赖于一个IManager
。将从BaseComponent
到TComponent
的转换放在BaseManager<TComponent>
中。 - default.kramerBaseComponent
依赖于IManager
,那么我该如何确保所有派生自BaseComponent
的类都有一个接受正确的具体IManager
实现的构造函数,以便将其添加到管理器列表中?如果您有时间,我希望能得到详细的答案解释。 - George Duckett