O tipo 'T' não pode ser usado como parâmetro de tipo 'T' no tipo ou método genérico

Eu tenho o seguinte método:

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

NoAddComponent line Estou recebendo o seguinte erro:

O tipo 'T' não pode ser usado como parâmetro de tipo 'T' no tipo ou método genérico 'GameObject.AddComponent ()'. Não há conversão de boxe ou conversão de parâmetro de tipo de 'T' para 'UnityEngine.Component'.

Não tenho certeza do que posso fazer para corrigir esse erro, por que não posso fazer isso?

questionAnswers(1)

yourAnswerToTheQuestion