访问数组我在某些对象创建类型数组反射
var tag = maket.GetType().GetProperty(q.xmltags).GetValue(maket, null);
现在我想一些元素添加到阵列中,我尝试这样的代码:
dynamic temp = tag;
tag = temp.ToList().Add(test).ToArray();
显然它不起作用。我如何正确地做到这一点?
访问数组我在某些对象创建类型数组反射
var tag = maket.GetType().GetProperty(q.xmltags).GetValue(maket, null);
现在我想一些元素添加到阵列中,我尝试这样的代码:
dynamic temp = tag;
tag = temp.ToList().Add(test).ToArray();
显然它不起作用。我如何正确地做到这一点?
如果您在使用LINQ助手设置,是这样的:
var list = Enumerable.ToList(temp);
list.Add(test);
tag = Enumerable.ToArray(list);
(然后使用反射来设置回防的特性) - 不过,这是扩大数组一个非常昂贵的方式(至少,一旦重复了几次)。如果你能的属性更改列表,而不是一个数组,你可以使用:
IList list = {reflection "get" code}
list.Add(test);
(没有必要“设置”之后)
您的代码得到一个数组,将其转换为列表,然后向该列表中添加一个元素。存储在属性中的原始数组保持不变。尝试设置你的新阵早在使用属性:
maket.GetType()
.GetProperty(q.ObjectType.xmltag)
.SetValue(maket, tag , null);
也许无类型的数组列表可能是有用的
var arrayList = new ArrayList((Array)tag);
arrayList.Add(newValue);
tag = arrayList.ToArray((Type)q.xmltag);
没错。正是我需要的。谢谢。 – 2012-02-03 06:05:21