C# 通过反射设置索引处数组的值(非属性)

C# 通过反射设置索引处数组的值(非属性),c#,arrays,reflection,indexing,C#,Arrays,Reflection,Indexing,我想设置一个类的数组的值 obj[] 通过反思 e、 g 如何通过CSharp中的反射实现这一点?我可以轻松地为索引属性执行此操作,但不能为数组类型执行此操作 不完全确定你在问什么,但假设你有这样一门课: public class Blah { public int[] Stuff; } 那么这应该是可行的: //some setup var obj = new Blah(); obj.Stuff = new int[] { 1, 2, 3, 4, 5 }; 获取要操作的字段:

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

 obj[]
通过反思

e、 g


如何通过CSharp中的反射实现这一点?我可以轻松地为索引属性执行此操作,但不能为数组类型执行此操作

不完全确定你在问什么,但假设你有这样一门课:

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

到目前为止你有什么?对于要编写的方法,方法签名是什么样子的?你的问题目前还不清楚。(
Array.SetValue
也许?)Array.SetValue就是我要找的函数!
var theArray = (Array)field.GetValue(obj);
//Set element 1 to 100
theArray.SetValue(100, 1);