C#

24 jul, 2018

Restrições de tipos genéricos em C#

435 visualizações
Publicidade

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.
Restrição quando o T for uma classe
Exemplo de instância da classe.
  • Classe genérica, somente poderá ter uma instância quando o tipo genérico for uma struct.
Restrição quando o T for uma struct
Exemplo de instância de classe.
  • 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.
Restrição quando a classe genérica, estiver com a herança de IDisposable
Exemplo de instância de classe
Classe com herança

Podemos fazer restrições múltiplas, desta forma:

Restrições múltiplas
Exemplo de instância de classe

  • 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.
Restrição obrigando, que a classe genérica tenha um construtor vazio
Exemplo de instância
Classe com construtor 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.