Получить доступ к свойству, используя его имя в vb.net - PullRequest
9 голосов
/ 31 мая 2010

Например:

Sub Test()
  Dim car as new MyCar
  car.chassis.wheel.radius = 15
  Console.WriteLine(car.chassis.wheel.radius)    
End Sub

Так что вопрос. Можно ли получить доступ к свойству, используя его строковое имя, как Что-то ("car.chassis.wheel.radius") = 15?

Ответы [ 2 ]

12 голосов
/ 31 мая 2010

Можно, но не так кратко, как в вашем вопросе.

Эта функция получит любое свойство любого объекта по имени.

Public Function GetPropertyValue(ByVal obj As Object, ByVal PropName As String) As Object
    Dim objType As Type = obj.GetType()
    Dim pInfo As System.Reflection.PropertyInfo = objType.GetProperty(PropName)
    Dim PropValue As Object = pInfo.GetValue(obj, Reflection.BindingFlags.GetProperty, Nothing, Nothing, Nothing)
    Return PropValue
End Function

Я оставляю обработку ошибок вам. И никаких последствий:)

3 голосов
/ 01 июня 2016

Да, вы можете очень легко:

Dim radius As Integer = CallByName(car.chassis.wheel, "radius", Microsoft.VisualBasic.CallType.Get, Nothing)

См. эту страницу Microsoft для справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...