首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Reflection.PropertyInfo

使用Reflection.PropertyInfo
EN

Stack Overflow用户
提问于 2015-01-13 03:21:03
回答 1查看 595关注 0票数 3

我需要循环遍历对象的属性,并为每个属性设置2个值。

例如,假设您有一个汽车类:

代码语言:javascript
运行
复制
 Class car
  Property Wheel1 As Wheel
  Property Wheel2 As Wheel
  Property Wheel3 As Wheel
  Property Wheel4 As Wheel
 End Class

每个轮子都有一组特性:

代码语言:javascript
运行
复制
 Class Wheel
  Property size As Integer
  Property type As Integer
 End Class

是否有一种方法可以动态地遍历具有轮子的对象并将其所有车轮设置为size=5和type=1。

这就是我想让它开始工作的地方:

代码语言:javascript
运行
复制
 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不是按要求从车轮上取下来的.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-13 03:34:56

您应该使用TempWheel.PropertyType(),而不是只使用TempWheel.GetType(),或者只设置如下所示的车轮:

代码语言:javascript
运行
复制
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呢

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27914400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档