gpt4 book ai didi

c# - 循环泛型类型参数

转载 作者:IT王子 更新时间:2023-10-29 04:42:52 31 4
gpt4 key购买 nike

我有 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 的构造函数类。

我该如何管理这种循环依赖?

最佳答案

听起来您可能想要两个泛型类型参数:

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>

是的,它很臭 - 但这是我在 Protocol Buffers 中做过的事情.

那么你会:

public class PhysicsManager : BaseManager<PhysicsComponent, PhysicsManager>

public class PhysicsComponent : BaseComponent<PhysicsComponent, PhysicsManager>

关于c# - 循环泛型类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138839/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com