通过反射在索引处设置数组的值(不是 属性)
Set Value of an Array at Index via reflection (not Property)
我想设置数组的值 class
obj[]
通过反射!
例如
obj[2] = aa;
我如何通过 CSharp 中的反射来做到这一点?我可以轻松地为索引属性做到这一点,但不能为数组类型做到这一点!
不完全确定你在问什么,但假设你 class 是这样的:
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);
我想设置数组的值 class
obj[]
通过反射!
例如
obj[2] = aa;
我如何通过 CSharp 中的反射来做到这一点?我可以轻松地为索引属性做到这一点,但不能为数组类型做到这一点!
不完全确定你在问什么,但假设你 class 是这样的:
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);