我希望能够声明具有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]
答案 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
{
}