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.