Eu tenho aula
Public Class Foo
Private _Name As String
Public Property Name() As String
Get
Return _Name
End Get
Set(ByVal value As String)
_Name = value
End Set
End Property
Private _Age As String
Public Property Age() As String
Get
Return _Age
End Get
Set(ByVal value As String)
_Age = value
End Set
End Property
Private _ContactNumber As String
Public Property ContactNumber() As String
Get
Return _ContactNumber
End Get
Set(ByVal value As String)
_ContactNumber = value
End Set
End Property
End Class
Eu quero percorrer as propriedades da classe acima. por exemplo;
Public Sub DisplayAll(ByVal Someobject As Foo)
For Each _Property As something In Someobject.Properties
Console.WriteLine(_Property.Name & "=" & _Property.value)
Next
End Sub
.net
vb.net
class
reflection
properties
Sachin Chavan
fonte
fonte
BindingFlags.Public | BindingFlags.GetProperty
ou algo assim?Observe que, se o objeto que você está falando tiver um modelo de propriedade personalizado (como
DataRowView
etc paraDataTable
), será necessário usarTypeDescriptor
; a boa notícia é que isso ainda funciona bem para aulas regulares (e pode até ser muito mais rápido que a reflexão ):Isso também fornece acesso fácil a coisas como
TypeConverter
formatação:fonte
Versão VB do C # fornecida por Brannon:
Usando sinalizadores Binding no lugar da linha no.3
fonte
A reflexão é bastante "pesada"
Talvez tente esta solução: // C #
«VB.Net
A reflexão diminui +/- 1000 x a velocidade de uma chamada de método, mostrada em O desempenho das coisas cotidianas
fonte
Aqui está outra maneira de fazer isso, usando uma lambda LINQ:
C #:
VB.NET:
fonte
É assim que eu faço.
fonte
Eu usei o bloco de código acima para redefinir todas as propriedades de string no meu objeto de controle de usuário da web cujos nomes são iniciados com "Doc".
fonte