El tipo 'T' no se puede usar como parámetro de tipo 'T' en el tipo o método genérico

Tengo el siguiente método:

protected T AttachComponent<T>(){
    T gsComponent = gameObject.GetComponent<T>();
    if(gsComponent == null){
        gsComponent = gameObject.AddComponent<T>();
    }
    return gsComponent;
}

Sobre elAddComponent línea obtengo el siguiente error:

El tipo 'T' no se puede usar como parámetro de tipo 'T' en el tipo genérico o método 'GameObject.AddComponent ()'. No hay conversión de boxeo o conversión de parámetros de tipo de 'T' a 'UnityEngine.Component'.

No estoy seguro de qué puedo hacer para corregir este error, ¿por qué no puedo hacer esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta