I want to be able to declare a generic class with a 3 level inheritance
I'm having trouble getting the generic type through from the top of the inheritance tree to the generic.

So in this example the Type of Animal would be Dog.
How would this be achieved?

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

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

public class Dog : Quadruped<Dog>
{
}

```

At present I'm sure how to proceed, It's not valid

The type 'T' cannot be used as type parameter 'T' in the generic type or method 'Animal'. There is no boxing conversion or type parameter conversion from 'T' to 'UnityEngine.MonoBehaviour'. [Assembly-CSharp]