通过反射(不是属性)设置索引处数组的值

时间:2015-07-07 12:45:55

标签: c# arrays reflection indexing

我想设置一个类的数组的值

 obj[]

通过反思!

e.g。

 obj[2] = aa;

如何通过CSharp中的Reflection进行此操作?我可以轻松地为索引属性执行此操作,但不能用于数组类型!

1 个答案:

答案 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);