Tengo una clase.
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
Quiero recorrer las propiedades de la clase anterior. p.ej;
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
fuente
fuente
BindingFlags.Public | BindingFlags.GetProperty
o algo?Tenga en cuenta que si el objeto del que está hablando tiene un modelo de propiedad personalizado (como
DataRowView
etc paraDataTable
), entonces debe usarloTypeDescriptor
; La buena noticia es que esto todavía funciona bien para las clases regulares (e incluso puede ser mucho más rápido que la reflexión ):Esto también proporciona un fácil acceso a cosas como el
TypeConverter
formato:fuente
Versión VB de C # dada por Brannon:
Usar banderas de enlace en lugar de la línea no.3
fuente
La reflexión es bastante "pesada"
Quizás pruebe esta solución: // C #
'VB.Net
La reflexión se ralentiza +/- 1000 x la velocidad de una llamada al método, que se muestra en The Performance of Everyday Things
fuente
Aquí hay otra forma de hacerlo, usando un LINQ lambda:
C#:
VB.NET:
fuente
Así es como lo hago.
fuente
Utilicé el bloque de código anterior para restablecer todas las propiedades de cadena en mi objeto de control de usuario web cuyos nombres comienzan con "Doc".
fuente