【问题标题】:Set Value of an Array at Index via reflection (not Property)通过反射在索引处设置数组的值(不是属性)
【发布时间】:2015-07-07 12:45:54
【问题描述】:

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

 obj[]

通过反射!

例如

 obj[2] = aa;

如何通过 CSharp 中的反射来做到这一点?我可以很容易地为索引属性做到这一点,但不能用于数组类型!

【问题讨论】:

  • 那么到目前为止你有什么?您要编写的方法的方法签名是什么样的?你的问题目前还不清楚。 (Array.SetValue 或许?)

标签: c# arrays reflection indexing


【解决方案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);

【讨论】:

  • Array.SetValue 是我要找的函数!
猜你喜欢
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多