Junior — Middle
Existem restrições na definição do seu próprio modelo universal (genérico)?
sobes.tech IA
Resposta da IA
Ao definir modelos universais próprios (generics) em C#, existem algumas limitações:
- Os tipos de parâmetros devem ser referências, tipos de valor ou ter restrições específicas (constraints), por exemplo, herdar de uma classe específica, implementar uma interface, ter um construtor sem parâmetros.
- Não é possível usar tipos primitivos diretamente sem restrições se for necessária funcionalidade específica.
- Não é possível criar instâncias do tipo de parâmetro sem a restrição new(), pois o compilador não sabe como inicializá-lo.
- Não é possível usar os operadores typeof(T) ou is T sem restrições.
Exemplo de restrição:
public class Repository<T> where T : IEntity, new()
{
public T CreateNew() => new T();
}
Aqui, T deve implementar a interface IEntity e ter um construtor sem parâmetros.