Ich habe ein klasse.
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
Ich möchte die Eigenschaften der obigen Klasse durchlaufen. z.B;
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
quelle
quelle
BindingFlags.Public | BindingFlags.GetProperty
oder so?Beachten Sie, dass Sie verwenden müssen, wenn das Objekt, über das Sie sprechen, ein benutzerdefiniertes Eigenschaftsmodell hat (z. B.
DataRowView
usw. fürDataTable
)TypeDescriptor
. Die gute Nachricht ist, dass dies für den regulären Unterricht immer noch gut funktioniert (und sogar viel schneller als das Nachdenken sein kann ):Dies bietet auch einfachen Zugriff auf Dinge wie
TypeConverter
zum Formatieren:quelle
VB-Version von C # von Brannon:
Verwenden von Bindungsflags anstelle von Zeile Nr. 3
quelle
Reflexion ist ziemlich "schwer"
Versuchen Sie vielleicht diese Lösung: // C #
'VB.Net
Die Reflexion verlangsamt das +/- 1000-fache der Geschwindigkeit eines Methodenaufrufs, wie in Die Leistung alltäglicher Dinge gezeigt
quelle
Hier ist eine andere Möglichkeit, dies mit einem LINQ-Lambda zu tun:
C #:
VB.NET:
quelle
So mache ich es.
quelle
Ich habe den obigen Codeblock verwendet, um alle Zeichenfolgeneigenschaften in meinem Webbenutzersteuerungsobjekt zurückzusetzen, deren Namen mit "Doc" gestartet werden.
quelle