传递泛型类类型向下继承类

时间:2016-03-15 12:18:17

标签: c# unity3d

我希望能够声明具有3级继承的泛型类 我在从继承树的顶部到通用树的过程中遇到泛型类型时遇到了麻烦。

所以在这个例子中,动物的类型将是狗。 如何实现这一目标?

public class Animal<T> : MonoBehaviour where T : MonoBehaviour
{       
}

public class Quadruped<T> : Animal<T> where T
{
}

public class Dog : Quadruped<Dog>
{
}

目前我确定如何继续,它无效

类型&#39; T&#39;不能用作类型参数&#39; T&#39;通用类型或方法&#39; Animal&#39;。没有拳击转换或类型参数转换来自&#39; T&#39;到UnityEngine.MonoBehaviour&#39;。 [汇编CSHARP]

2 个答案:

答案 0 :(得分:5)

这应该有用......

public class Animal<T> : MonoBehaviour where T : MonoBehaviour
{       
}

public class Quadruped<T> : Animal<T> where T : MonoBehaviour
{
}

public class Dog : Quadruped<Dog>
{
}

答案 1 :(得分:1)

问题在于这个课程:

public class Quadruped<T> : Animal<T>
{

}

Animal<T>需要T成为MonoBehaviour,但是类Quadruped<T>未对T应用任何约束,因此Quadruped<T> },T可以是任何类型,这不是有效的,因为Animal<T>明确要求MonoBehaviour

您可以通过对Quadruped<T>

应用相同的约束来解决此问题
public class Quadruped<T> : Animal<T> where T : MonoBehaviour
{

}