我需要循环遍历对象的属性,并为每个属性设置2个值。
例如,假设您有一个汽车类:
Class car
Property Wheel1 As Wheel
Property Wheel2 As Wheel
Property Wheel3 As Wheel
Property Wheel4 As Wheel
End Class
每个轮子都有一组特性:
Class Wheel
Property size As Integer
Property type As Integer
End Class
是否有一种方法可以动态地遍历具有轮子的对象并将其所有车轮设置为size=5和type=1。
这就是我想让它开始工作的地方:
Dim ThisCar As New car
Dim Wheels() As Reflection.PropertyInfo = ThisCar.GetType().GetProperties()
Dim i As Integer = 0
Do Until i = Wheels.Count
Dim TempWheel As Reflection.PropertyInfo = Wheels(i)
Dim WheelProps() As Reflection.PropertyInfo = TempWheel.GetType().GetProperties()
i = i + 1
Loop
WheelProps
不是按要求从车轮上取下来的.
发布于 2015-01-13 03:34:56
您应该使用TempWheel.PropertyType(),而不是只使用TempWheel.GetType(),或者只设置如下所示的车轮:
foreach(var pInfo in typeof(car).GetProperties()
{
if(pInfo.PropertyType == typeof(Wheel))
{
// Get the value of existing wheel
var wheel = (Wheel)pInfo.GetValue(ThisCar);
Console.WriteLine(wheel.size);
Console.WriteLine(wheel.type);
// Set the value of wheel
wheel.size = 5;
wheel.type = 1;
//pInfo.SetValue(ThisCar, new Wheel() {size = 5, type = 1}, null);
}
}
但是为什么不用List<Wheel>
实现car呢
https://stackoverflow.com/questions/27914400
复制相似问题