restricciones genericas clases c# unity3d

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



restricciones en c# (1)

El problema es que el método AddObject devuelve un Componente . Necesita decirle al compilador que su T es realmente un tipo de Componente.

Adjunte una restricción genérica a su método, para asegurarse de que sus T s son Component

protected void AttachComponent<T>() where T : Component { // Your code. }

Tengo el siguiente método:

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

En la línea AddComponent , recibo el siguiente error:

The type ''T'' cannot be used as type parameter ''T'' in the generic type or method ''GameObject.AddComponent<T>()''. There is no boxing conversion or type parameter conversion from ''T'' to ''UnityEngine.Component''.

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