Saya ada kelas.
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
Saya ingin mengulang properti dari kelas di atas. misalnya;
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
sumber
sumber
BindingFlags.Public | BindingFlags.GetProperty
atau apalah?Perhatikan bahwa jika objek yang Anda bicarakan memiliki model properti khusus (seperti
DataRowView
dll untukDataTable
), maka Anda perlu menggunakanTypeDescriptor
; kabar baiknya adalah ini masih berfungsi dengan baik untuk kelas reguler (dan bahkan bisa lebih cepat daripada refleksi ):Ini juga menyediakan akses mudah ke hal-hal seperti
TypeConverter
untuk memformat:sumber
Versi VB dari C # yang diberikan oleh Brannon:
Menggunakan Binding flags sebagai ganti garis no.3
sumber
Refleksi cukup "berat"
Mungkin coba solusi ini: // C #
'VB.Net
Refleksi memperlambat +/- 1000 x kecepatan pemanggilan metode, yang ditunjukkan dalam The Performance of Everyday Things
sumber
Berikut cara lain untuk melakukannya, menggunakan lambda LINQ:
C #:
VB.NET:
sumber
Beginilah cara saya melakukannya.
sumber
Saya menggunakan blok kode di atas untuk mengatur ulang semua properti string di objek kontrol pengguna web saya yang namanya dimulai dengan "Doc".
sumber