Sobes.tech
Junior — Middle

¿Existen restricciones al definir una plantilla universal propia (genérica)?

sobes.tech AI

Respuesta de la IA

Al definir plantillas universales propias (generics) en C#, existen algunas restricciones:

  • Los tipos de parámetros deben ser referencias, tipos de valor o tener restricciones específicas (constraints), por ejemplo, heredar de una clase específica, implementar una interfaz, tener un constructor sin parámetros.
  • No se pueden usar tipos primitivos directamente sin restricciones si se requiere funcionalidad específica.
  • No se pueden crear instancias del tipo de parámetro sin la restricción new(), ya que el compilador no sabe cómo inicializarlo.
  • No se pueden usar los operadores typeof(T) o is T sin restricciones.

Ejemplo de restricción:

public class Repository<T> where T : IEntity, new()
{
    public T CreateNew() => new T();
}

Aquí, T debe implementar la interfaz IEntity y tener un constructor sin parámetros.