Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access property using its name in vb.net

For example:

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

So question is. Is it possible to access the property using its string name like Something("car.chassis.wheel.radius") = 15?

like image 836
rqm.yorik Avatar asked May 31 '10 09:05

rqm.yorik


2 Answers

Yes you can very easily:

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

See this Microsoft page for reference.

like image 165
pnizzle Avatar answered Oct 10 '22 06:10

pnizzle


You can, but not as concise as in your question.

This function will get any property of any object by name.

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

I leave error handling to you. And any consequences :)

like image 39
Miroslav Zadravec Avatar answered Oct 10 '22 06:10

Miroslav Zadravec