Em diversas situações no desenvolvimento de software, criamos classes genéricas para nos auxiliar, mas às vezes temos que restringir que essa mesma classe genérica seja implementada com determinadas condições como, por exemplo:
- Classe genérica somente poderá ter uma instância quando o tipo genérico seja uma outra classe.
- Classe genérica, somente poderá ter uma instância quando o tipo genérico for uma struct.
- Classe genérica, somente poderá ter uma instância, quando o tipo genérico seja uma classe, que essa classe tenha herança de uma Interface ou classe base.
Podemos fazer restrições múltiplas, desta forma:
- Classe genérica, somente poderá ter uma instância, quando o tipo genérico seja uma classe, e que tenha a obrigatoriedade de um construtor vazio, quando já se tem um construtor não vazio.
Esses tipos de restrições podem ajudar e muito em seu desenvolvimento, onde de fato, você pode marcar todas as suas classes, interfaces e etc, como elas poderão ser instanciadas.