我想设置一个类的数组的值
obj[]
通过反思!
e.g。
obj[2] = aa;
如何通过CSharp中的Reflection进行此操作?我可以轻松地为索引属性执行此操作,但不能用于数组类型!
答案 0 :(得分:1)
不完全确定你在问什么,但假设你有类似这样的课程:
public class Blah
{
public int[] Stuff;
}
然后这应该有效:
//some setup
var obj = new Blah();
obj.Stuff = new int[] { 1, 2, 3, 4, 5 };
获取您想要操作的字段:
var field = obj
.GetType()
.GetFields()
.Single(f => f.Name == "Stuff");
现在您可以获取值,然后使用Array.SetValue
更改元素:
var theArray = (Array)field.GetValue(obj);
//Set element 1 to 100
theArray.SetValue(100, 1);