Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Colocando restrições em Genéricos C#

Implementando restrições no Generics (C#), uma forma de garantir qualidade e produtividade no seu código.

Olá pessoal,
 
Vou falar um pouco sobre as classes genéricas , eventualmente é recomendável assegurar que o parâmetro de um tipo utilizado por uma classe genérica identifique um tipo que fornce certos métodos. Por exemplo, se estiver definindo uma classe Carro, você pode querer que todos os objetos armazenados na classe contenham os métodos de carro, como Ligar, Desligar, Andar, Parar e etc.
 Se utilizar restrição no genérico, você limita os parâmetros de tipo de uma classe genérica para aquelas que a implementam um conjunto específico de interfaces e, portanto, fornecer os métodos definidos por essas interfaces. Por exemplo, imagine uma Interface para carro que tivesse os métodos acima (Ligar, Desligar etc), como ficaria a definição da minha classe no C#.
 
Simples, basta declarar a classe genérica da seguinte forma:
 
class Carro where T : ICarro -> Neste caso o compilador irá verificar se os tipos utilizado por T implementam as interfaces e consequentemente os métodos das interfaces, pois com a palavra Where eu apontei que minha classe generica terá que herdar de ICarro.
 
Veja outro exemplo utilizando uma classe e interface chamada Familia:
 
interface IFamilia
{   void reuniao();  }   //Definição da interface com o método reunião() que não possui um retorno.
Agora iremos criar uma classe Pai que sera a responsavel pelo Genericos.
 
class Pai where T : IFamilia
{
}
Bom, vamos implementar agora a classe filho, nesta vamos fazer uma chamada a classe Pai, passando o Filho.
class Filho
{
      Pai<Filho> filho = new Pai<Filho>();
}
 
Repare que se eu compilar meu código, eu irei obter ume exception, pois meu compilador irá identificar que a minha classe Filho não possui a referencia a Interface Familia, vamos então alterar o código para :
class Filho : IFamilia
{
       public void reuniao()
       { }
       Pai<Filho> filho = new Pai<Filho>();
}
 
Repare que ao implementar a Interface, o compilador permitiu a compilação do meu código, este tipo de prática evita muitos erros de desenvolvimento..
 
 
Eu recentemente fiz um exemplo sobre o Entity Framework no meu blog, o qual utilizei as restrições do Generics, veja http://nelsonborgesjr.spaces.live.com/blog/cns!A1C7FFFCFB9D3EE5!304.entry , neste exemplo usei bastante o generics e as implementações das interfaces, fazendo isso obtive bastante produtividade e redução de linhas de código.
 
 
 
Abraço,
 
 
 
Nelson Borges
 




    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03