INICIALIZA?ÃO DA CLASSE
Hoje esta triste, como inicializo as classes usuário e menus a partir da classe menupermissão ? Deu branco .
obj.Usuarios = new Usuarios(); //ou seja lá qual o tipo que [Ô]Usuarios[Ô] tenha
obj.Usuarios.ID = 99;
O mesmo para [Ô]Menus[Ô], que deve ser o mesmo caso.
Citação::
MenuPermissoes, contém uma propriedade [Ô]Usuarios[Ô] que é outra classe, logo, precisa ser insntanciada também antes de passar valores para suas propriedades:
obj.Usuarios = new Usuarios(); //ou seja lá qual o tipo que [Ô]Usuarios[Ô] tenha
obj.Usuarios.ID = 99;
O mesmo para [Ô]Menus[Ô], que deve ser o mesmo caso.
Exatamente como o Kerplunk disse. O que você pode fazer também, é instanciar uma nova Classe Usuarios no construtor da classe MenuPermissoes, assim ao instanciar a classe MenuPermissoes, este erro não irá ocorrer, ou fazer da forma que o Kerp demonstrou, o resultado é o mesmo.
Citação::
:
MenuPermissoes, contém uma propriedade [Ô]Usuarios[Ô] que é outra classe, logo, precisa ser insntanciada também antes de passar valores para suas propriedades:
obj.Usuarios = new Usuarios(); //ou seja lá qual o tipo que [Ô]Usuarios[Ô] tenha
obj.Usuarios.ID = 99;
O mesmo para [Ô]Menus[Ô], que deve ser o mesmo caso.
Exatamente como o Kerplunk disse. O que você pode fazer também, é instanciar uma nova Classe Usuarios no construtor da classe MenuPermissoes, assim ao instanciar a classe MenuPermissoes, este erro não irá ocorrer, ou fazer da forma que o Kerp demonstrou, o resultado é o mesmo.
Apesar de essa prática não ir diretamente contra à s melhores práticas, pessoalmente não acho uma boa idéia. Esse tipo de situação pode ser contornada de várias formas, yield, Lazy<T> e até mesmo Observable<T>, mas a codificação complica um pouco e não acho boa idéia investir nisso caso não tenha ainda domÃnio de OOP.
Citação:Apesar de essa prática não ir diretamente contra à s melhores práticas, pessoalmente não acho uma boa idéia. Esse tipo de situação pode ser contornada de várias formas, yield, Lazy<T> e até mesmo Observable<T>, mas a codificação complica um pouco e não acho boa idéia investir nisso caso não tenha ainda domÃnio de OOP.
Qual prática ? Que você mencionou ou a do GUIMORAES ? Ou o que estou fazendo ?
Citação::
Apesar de essa prática não ir diretamente contra à s melhores práticas, pessoalmente não acho uma boa idéia. Esse tipo de situação pode ser contornada de várias formas, yield, Lazy<T> e até mesmo Observable<T>, mas a codificação complica um pouco e não acho boa idéia investir nisso caso não tenha ainda domÃnio de OOP.
Qual prática ? Que você mencionou ou a do GUIMORAES ? Ou o que estou fazendo ?
Sou defensor de padrões S.O.L.I.D. e esses princÃpios defendem separação de responsabilidades. Instanciar propriedades tipadas, não é responsabilidade do construtor da classe base. Você deve instanciar essas propriedades quando forem ser usadas. Um objeto(no seu caso, uma propriedade) [Ô]null[Ô], deve permanecer null até que seja necessário ser instanciada. Imagine o caso de 1 para muitos, tipo você tem uma classe com uma propriedade List<T> de itens e esses itens podem ser um milhão de entidades. Imagine que cada uma dessas entidades Item, tem uma propriedade tipada qualquer. Para cada uma que você adicionar na lista, você estará jogando [Ô]lixo[Ô] na pilha, fazendo todo o resto do processo interno(incluindo GAC), ser mais lento e mais propensos à serem bem mais lentos.
Um paralelo à isso, seria você instanciar todos os forms da sua aplicação caso abra um deles. Imagine, você abre um form e instancia todos os outros, todas as vezes.
Citação:Imagine o caso de 1 para muitos, tipo você tem uma classe com uma propriedade List<T> de itens e esses itens podem ser um milhão de entidades. Imagine que cada uma dessas entidades Item, tem uma propriedade tipada qualquer. Para cada uma que você adicionar na lista, você estará jogando [Ô]lixo[Ô] na pilha, fazendo todo o resto do processo interno(incluindo GAC), ser mais lento e mais propensos à serem bem mais lentos.
Seria esse exemplo ?
Lista permissões trazendo os menus e a propriedade Menus, trazendo menus novamente. Vamos supor que a propriedade Menus teria 100 itens, então listaria os 100 itens. Realmente vai ficar lento.
Citação::Seria esse exemplo ?
Lista permissões trazendo os menus e a propriedade Menus, trazendo menus novamente. Vamos supor que a propriedade Menus teria 100 itens, então listaria os 100 itens. Realmente vai ficar lento.
é também um caso. é que carregando coisas desnecessárias quando existem múltiplas dependências, sempre vai causar isso. A regra é somente ler quando for necessário.