PASSAR VALOR CAMADA
Boa noite,
Pessoal, tenho as seguintes propriedades em uma classe DTOFornecedor:
No form eu faço algo do tipo
Então, por exemplo no form de Fornecedores onde tem o código acima eu tenho uns 30 campos e o nome das propriedades na DTOFornecedor é o mesmo nome, como que eu faria para que eu diminuÃsse esse código?
Obrigado.
Pessoal, tenho as seguintes propriedades em uma classe DTOFornecedor:
[ô]===========================================
Private _Fornecedor_ID
Property Fornecedor_ID
Get
Return _Fornecedor_ID
End Get
Set (byval Value)
_Fornecedor_ID = value
End Set
End Property
[ô]===========================================
Private _Fornecedor_UF_ID
Property Fornecedor_UF_ID
Get
Return _Fornecedor_UF_ID
End Get
Set (byval Value)
_Fornecedor_UF_ID = value
End Set
End Property
[ô]============================================
Private _Fornecedor_GrupoFornecedor_ID
Property Fornecedor_GrupoFornecedor_ID
Get
Return _Fornecedor_GrupoFornecedor_ID
End Get
Set (byval Value)
_Fornecedor_GrupoFornecedor_ID = value
End Set
End Property
[ô]===========================================
No form eu faço algo do tipo
Dim Fornecedor as New DTOFornecedor
Fornecedor.Fornecedor_ID = Fornecedor_ID.text
Fornecedor.Fornecedor_UF_ID = Fornecedor_UF_ID.text
Fornecedor.Fornecedor_GrupoFornecedor_ID = Fornecedor_GrupoFornecedor_ID.text
Então, por exemplo no form de Fornecedores onde tem o código acima eu tenho uns 30 campos e o nome das propriedades na DTOFornecedor é o mesmo nome, como que eu faria para que eu diminuÃsse esse código?
Obrigado.
Primeiramente, você poderia utilizar as propriedades autoimplementadas.
ex:
Public Class Fornecedor
Property ID as Integer
Property UF as String
End Class
Desta forma o .Net cria automaticamente um atributo privado (ele fica oculto) e se você quiser utiliza-lo, poderia fazer assim:
_ID = 1
_UF= [Ô]Rio de Janeiro[Ô]
Quando você realmente precisar fazer um validacao no atributo dentro da propriedade, ai você cria a propriedade do jeito classico mesmo.
Outra coisa:
Evite ficar escrevendo o nome da classe nas propriedades, isso suja muito o codigo. Faça conforme eu fiz acima. Olha como fica mais claro.
_________________________________________________________________________________________________________
Respondendo a sua pergunta, você pode usar reflexão para preencher as propriedades e deixar o codigo mais limpo e reaproveitável. Essa técnica é bem avançada. Procure saber sobre o assunto.
vlw
ex:
Public Class Fornecedor
Property ID as Integer
Property UF as String
End Class
Desta forma o .Net cria automaticamente um atributo privado (ele fica oculto) e se você quiser utiliza-lo, poderia fazer assim:
_ID = 1
_UF= [Ô]Rio de Janeiro[Ô]
Quando você realmente precisar fazer um validacao no atributo dentro da propriedade, ai você cria a propriedade do jeito classico mesmo.
Outra coisa:
Evite ficar escrevendo o nome da classe nas propriedades, isso suja muito o codigo. Faça conforme eu fiz acima. Olha como fica mais claro.
_________________________________________________________________________________________________________
Respondendo a sua pergunta, você pode usar reflexão para preencher as propriedades e deixar o codigo mais limpo e reaproveitável. Essa técnica é bem avançada. Procure saber sobre o assunto.
vlw
Então, pesquisei em vários lugares sobre o Reflection e não encontrei nada que eu conseguisse entender.
Você poderia usar reflexao para vasculhar o seu obj e pegar os dados e popular os seus controles.
O bom que fazendo para um objeto serve para todos os outros.
veja isso aqui:
http://www.bileras.com.br/reflection-parte-4-propriedades/
vlw
O bom que fazendo para um objeto serve para todos os outros.
veja isso aqui:
http://www.bileras.com.br/reflection-parte-4-propriedades/
vlw
Dei uma olhada, mas não encontrei nada a respeito de como reaproveitar o código.
Altair, lembra o projeto que haviamos iniciado em C# ??
Ele faz exatamente isso.
No entanto é necessário alguns padrões.
Nome do campo no formulario = txtNomeFornecedor.
Nome do Campo na Classe = NomeFornecedor.
Nome do Campo no banco = NomeForncedor.
Se utilizar este padrão, é possÃvel utilizar o Reflection para popular os campos ou popular/alterar os dados no banco.
Vou ver se consigo um tempinho aqui para disponibilizar um exemplo para vc em vb.net
Mas basicamente para pegar os nomes da propriedades seria algo assim :
Agora basta percorrer as propriedades e tipos criados para saber o nome do campo.
Se vc criar uma função que irá comparar os nomes dos campos com os nomes dos campos na classe, basta ter como parametro um objeto do tipo Control, e quando instanciar a Função passar como parametros os controles do formulario atual.
Ele faz exatamente isso.
No entanto é necessário alguns padrões.
Nome do campo no formulario = txtNomeFornecedor.
Nome do Campo na Classe = NomeFornecedor.
Nome do Campo no banco = NomeForncedor.
Se utilizar este padrão, é possÃvel utilizar o Reflection para popular os campos ou popular/alterar os dados no banco.
Vou ver se consigo um tempinho aqui para disponibilizar um exemplo para vc em vb.net
Mas basicamente para pegar os nomes da propriedades seria algo assim :
// Pessoa = new BLLPessoa();
[ô]Cria uma nova instancia do objeto BLLPessoa
Dim Pessoa as new BLLPessoa()
//PropertyInfo[] propriedades = Pessoa.GetType().GetProperties();
[ô]Cria uma lista com as propriedades da classe BLLPessoa
Dim Propriedades = Pessoa.GetType().GetProperties()
//System.Type type = Pessoa.GetType();
[ô]Cria uma lista com os tipos de dados das classe BLLPessoa
Dim type = Pessoa.GetType()
Agora basta percorrer as propriedades e tipos criados para saber o nome do campo.
Se vc criar uma função que irá comparar os nomes dos campos com os nomes dos campos na classe, basta ter como parametro um objeto do tipo Control, e quando instanciar a Função passar como parametros os controles do formulario atual.
Tópico encerrado , respostas não são mais permitidas