1

我试图弄清楚这是否可能。

我有一个类,BaseGameEntity,我目前从中派生 NormalDrop 和 OtherDrop,每个都有一个 StateMachine< T > 的实例,其中 T 分别是 NormalDrop 和 OtherDrop。

从这里可以调用适用于这些下降的相关状态。

我想要做的是将另一层放入 Drop 类中,该类派生自 BaseGameEntity ,然后其他形式的 drop 派生自该类。

在 Drop 中,我想要一个 StateMachine< T >,其中“T”变为 NormalDrop 或 OtherDrop,具体取决于使用它作为其基类的内容。

这真的可能吗?

4

1 回答 1

1

是的,您可以使用奇怪的重复模板模式

public class Drop<T> where T : Drop<T> { ... }
public class NormalDrop : Drop<NormalDrop> { ... }
public class OtherDrop : Drop<OtherDrop> { ... }

那么在 Drop 基类中 T 总是 NormalDrop 或 OtherDrop。

这种模式通常不被认为是对开发人员友好的,因为乍一看它令人困惑,并且可能有更好的方法来构建代码(尽管可能并非总是如此)。Eric Lippert 在这里写了一篇关于这种模式及其一些缺点的非常好的博客文章

于 2012-07-02T21:53:05.813 回答