Mam klasę.
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
Chcę przejrzeć właściwości powyższej klasy. na przykład;
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
źródło
źródło
BindingFlags.Public | BindingFlags.GetProperty
czy coś?Zwróć uwagę, że jeśli obiekt, o którym mówisz, ma model właściwości niestandardowych (na przykład
DataRowView
itp.DataTable
), Musisz użyćTypeDescriptor
; dobrą wiadomością jest to, że to nadal działa dobrze na zwykłych zajęciach (i może być nawet znacznie szybsze niż refleksja ):Zapewnia to również łatwy dostęp do rzeczy, takich jak
TypeConverter
formatowanie:źródło
Wersja języka VB C # podana przez Brannona:
Używanie flag Binding zamiast linii nr 3
źródło
Odbicie jest dość „ciężkie”
Być może wypróbuj to rozwiązanie: // C #
„VB.Net
Odbicie spowalnia +/- 1000-krotność szybkości wywołania metody, pokazanej w The Performance of Everyday Things
źródło
Oto inny sposób, aby to zrobić, używając LINQ lambda:
DO#:
VB.NET:
źródło
Tak to robię.
źródło
Użyłem powyższego bloku kodu, aby zresetować wszystkie właściwości ciągu w moim obiekcie kontroli użytkownika, którego nazwy są rozpoczynane od „Doc”.
źródło