【发布时间】:2020-05-01 22:05:16
【问题描述】:
我有 2 节课。 ClassA 有一些 ClassB 的对象,称为 Field01, Field02, ... A 类也有 B 类项目的列表。
我知道 ClassB 项目的名称,并想用列表中的值填充 ClassB 项目。
示例代码:
public class ClassA
{
public ClassB Field01 {get;set;}
public ClassB Field02 {get;set;}
//...
List<ClassB> myItems;
public void FillItems()
{
foreach(var item in MyItems)
{
// what I want in hardcode:
Field01.ValueA = MyItems[0].ValueA;
Field01.ValueB = MyItems[0].ValueB;
Field02.ValueA = MyItems[1].ValueA;
// ...
}
}
}
public class ClassB
{
public string ValueA {get;set;}
public string ValueB {get;set;}
}
在我的情况下,我将有一个计数变量,它将创建 Field01、Field02、Field03、...名称,具体取决于我的列表中有多少项目(ClassA 中总是有足够的 ClassB 字段可以填充)
我知道我可以通过名称获取我的 ClassB 项目的 PropertyInfo,但是我不知道我可以访问 ClassB 属性 ValueA 和 ValueB
// If ClassB was just a string or object this would work
Type myType = typeof(ClassA);
PropertyInfo myPropInfo = myType.GetProperty("Field01");
myPropInfo.SetValue(this, "Hello", null);
【问题讨论】:
-
您是否在示例代码中编写了额外的 foreach 循环?
-
“额外”是什么意思
-
@K.Dexter 示例代码中的 foreach 循环似乎是多余的,不是吗?您肯定不想多次使用相同的值设置每个字段吗?反正你没有使用
item。 -
@Sweeper 啊我现在是什么意思...硬代码属于 foreach 之上...在 foreach 循环中,生成字段名并且每个项目都针对一个字段 :) 我正在测试您的马上回答
标签: c# reflection attributes classname propertyinfo