我在某个对象中创建了类型化数组:
maket.GetType()
.GetProperty(q.xmltags)
.SetValue(maket,Array.CreateInstance(q.xmltag),0
), null);
我在这里得到那个数组:
var tag = maket.GetType().GetProperty(q.xmltags).GetValue(maket, null);
现在我想为该数组添加一些元素,我尝试这样的代码:
dynamic temp = tag;
tag = temp.ToList().Add(test).ToArray();
显然它不起作用。我该怎么做呢?
答案 0 :(得分:1)
如果您已开始使用LINQ帮助程序,请执行以下操作:
var list = Enumerable.ToList(temp);
list.Add(test);
tag = Enumerable.ToArray(list);
(然后使用反射来设置反对属性) - 然而,这是一种非常昂贵的扩展数组的方法(至少,一旦重复几次)。如果您可以将属性更改为列表而不是数组,则可以使用:
IList list = {reflection "get" code}
list.Add(test);
(之后无需“设定”)
答案 1 :(得分:0)
您的代码正在获取数组,将其转换为列表,然后向该列表添加元素。存储在属性中的原始数组保持不变。尝试使用以下方法将新数组设置回属性:
maket.GetType()
.GetProperty(q.ObjectType.xmltag)
.SetValue(maket, tag , null);
答案 2 :(得分:0)
也许无类型数组列表可能很有用
var arrayList = new ArrayList((Array)tag);
arrayList.Add(newValue);
tag = arrayList.ToArray((Type)q.xmltag);