我有2個泛型類,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'放到'BaseManager' –
'TComponent'我同意這有點臭,Jon指出,但我不太關注。如果'BaseComponent'依賴於一個'IManager',我將如何確保'BaseComponent'的所有派生類都有一個構造函數接受正確的具體'IManager'實現,因此我可以將其添加到管理器列表中?如果你有時間,我會很感激一個答案。 –