none
Classes Imutáveis RRS feed

  • Pergunta

  • Olá.

    Quando você cria uma classe imutável, as propriedades devem ter o "set" privado correto? Sendo seus valores inicializados no construtor. 

    A minha dúvida é: Se minha classe têm por exemplo 10 atributos, devo criar um construtor que receba esses 10 atributos? ou existe alguma outra forma?

     

    Valew.

    sexta-feira, 19 de março de 2010 12:51

Respostas

  • Anderson, desconheço uma outra forma.

    Uma solução, até mais ou menos, para isso é passar os parâmetros em uma lista e dai o construtor da classe se encarrega de percorrer a lista e atribuir o valor a cada uma das propriedades.

    Um problema com o método é que eu troque o valor de um atributo na lista, mas isso pode ser resolvido utilizando uma HashTable, o incoveniente disso é a conversão de tipo que terá que fazer para tirar o valor de dentro da tabela Hash.

    Ai tem que avaliar cada caso, espero ter ajudado!

    • Marcado como Resposta Anderson Milk sexta-feira, 19 de março de 2010 18:29
    sexta-feira, 19 de março de 2010 17:36

Todas as Respostas

  • Anderson, desconheço uma outra forma.

    Uma solução, até mais ou menos, para isso é passar os parâmetros em uma lista e dai o construtor da classe se encarrega de percorrer a lista e atribuir o valor a cada uma das propriedades.

    Um problema com o método é que eu troque o valor de um atributo na lista, mas isso pode ser resolvido utilizando uma HashTable, o incoveniente disso é a conversão de tipo que terá que fazer para tirar o valor de dentro da tabela Hash.

    Ai tem que avaliar cada caso, espero ter ajudado!

    • Marcado como Resposta Anderson Milk sexta-feira, 19 de março de 2010 18:29
    sexta-feira, 19 de março de 2010 17:36
  • Verdade Daniel, valew pela ajuda =).

    No C# 4 esse problema deve ser minimizado né? por que ai você coloca um único argumento "dynamic" no construtor e acessa as propriedades dele.

     

    Valew pela força.

    sexta-feira, 19 de março de 2010 18:29
  • Anderson

    eu acho que vc pode tambem avaliar o conceito de imutabilidade de sua classe.

    Um possibilidade é usar um construtor internal onde uma factory pode acessar e criar seu objeto. Ate mesmo suas properties podem der um acesso apenas interno.

    Avaliando o contexto de seu objeto como VO e avaliando que um objeto deve estar sempre num estado valido, vc pode iniciar ele sempre com valores minimos e permitir alteracao de seu estado atraves de metodos com restricao.


    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Sugerido como Resposta Iter Lubnon quarta-feira, 7 de abril de 2010 06:55
    segunda-feira, 22 de março de 2010 14:30
  • Que bom que a ideia tenha te ajudado!

    Quando ao dynamic mencionado eu recomendo um certo cuidado com a utilização desta nova funcionalidade pelo fato de que a resolução de tipo será realizada em tempo de execução.

    Ta e dai? E dai que o que eu não preciso é ter mais uma estapa de verificação na execução do meu programa ocasionando em mais instrução de processador. Claro cada caso é cada caso, mas se eu já sei qual o tipo que eu preciso porque utilizar uma opção que trará mais um passo na execução do meu programa.

    Isso é discurção para outra thread :D.

    segunda-feira, 22 de março de 2010 17:56