У меня есть класс.
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
Я хочу просмотреть свойства вышеупомянутого класса. например;
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
Сачин Чаван
источник
источник
BindingFlags.Public | BindingFlags.GetProperty
или что?Обратите внимание, что если объект, о котором вы говорите, имеет собственную модель свойств (например, и
DataRowView
т. Д. ДляDataTable
), то вам необходимо использоватьTypeDescriptor
; Хорошая новость заключается в том, что это все еще хорошо работает для обычных классов (и даже может быть намного быстрее, чем рефлексия ):Это также обеспечивает легкий доступ к таким вещам, как
TypeConverter
для форматирования:источник
VB версия C #, данная Бранноном:
Использование флагов привязки вместо строки № 3
источник
Отражение довольно "тяжелое"
Возможно, попробуйте это решение: // C #
«VB.Net
Отражение замедляет +/- 1000 х скорость вызова метода, показанную в Производительность повседневных вещей
источник
Вот еще один способ сделать это, используя лямбду LINQ:
C #:
VB.NET:
источник
Вот как я это делаю.
источник
Я использовал приведенный выше блок кода для сброса всех строковых свойств в моем объекте управления веб-пользователем, имена которых начинаются с «Doc».
источник