Geo*_*ett 19 c# generics circular-dependency
我有2个泛型类,一个BaseComponentClass和一个BaseManager类.
它们既抽象又有意成为具体的.
public abstract class BaseManager<T> where T : BaseComponent<?>
public abstract class BaseComponent<T> where T : BaseManager<?>
Run Code Online (Sandbox Code Playgroud)
BaseManager有一个BaseComponents列表,这就是为什么我想让它通用,所以a PhysicsManager : BaseManager<PhysicsComponent>将有一个列表PhysicsComponents.
我想(或者更确切地说,我认为我需要)BaseComponent是通用的,因为我只希望派生的类BaseComponent被"附加"到他们适当的经理.理想情况下,我不想为每个派生组件编写构造函数,因此我可以将它添加到传递的具体管理器类中.理想情况下,我想要一个采用抽象BaseManager类的构造函数.
我怎样才能管理这种循环依赖?
Jon*_*eet 27
听起来你可能想要两个泛型类型参数:
public abstract class BaseManager<TComponent, TManager>
where TComponent : BaseComponent<TComponent, TManager>
where TManager : BaseManager<TComponent, TManager>
public abstract class BaseComponent<TComponent, TManager>
where TComponent : BaseComponent<TComponent, TManager>
where TManager : BaseManager<TComponent, TManager>
Run Code Online (Sandbox Code Playgroud)
是的,它很臭 - 但这就是我在Protocol Buffers中所做的事情.
那你就得:
public class PhysicsManager : BaseManager<PhysicsComponent, PhysicsManager>
public class PhysicsComponent : BaseComponent<PhysicsComponent, PhysicsManager>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |