Saltar al contenido

¿Qué significa “El tipo T debe ser un tipo de referencia para usarlo como parámetro”?

Luego de mucho luchar ya encontramos el arreglo de esta incógnita que tantos lectores de nuestro sitio web tienen. Si tienes algún dato que compartir no dudes en aportar tu conocimiento.

Solución:

Si nos fijamos en la definición de Db:

public class DbSet : DbQuery, IDbSet, IQueryable, IEnumerable, IQueryable, IEnumerable, IInternalSetAdapter 
where TEntity : class

porque tiene un type constraint que el tipo genérico debe ser un class entonces debe inicializarlo con un tipo que también coincida con esta condición:

public class GenericRecordController : Controller where T : class
 ... 

Aparentemente tienen una restricción en el tipo genérico.

Todo lo que necesitas cambiar es:

public class GenericRecordController : Controller where T : class

Esto le dice al compilador que solo se pueden proporcionar tipos de referencia como tipo para T.

También puedes hacerlo con solo un método:

        public bool HasKey(T obj) where T : class
        
            return _db.Entry(obj).IsKeySet;
        

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *