array.setValue不起作用



我正在尝试使用array.setValue

将嵌套级数组设置为工作

我有一个非常长的嵌套级处理代码,但是我对类的数组有问题(而且我想使用反射)

这是我的代码:

Private Function ReadStruct(Of T As {New, Class})()
        Dim structArray As New T
        Dim structArraynn As Object = structArray
        structArray = readclasses(structArraynn)
        Return structArray
    End Function
Private Function readclasses(ByVal cls as object) as object
Dim obj as object = cls
For Each f As System.Reflection.FieldInfo In cls.GetType().GetFields

很多代码...

Dim obj2() As Object = f.GetValue(obj)
Dim MyInstance As Object = Activator.CreateInstance(Type.GetType(f.FieldType.ToString().Replace("[]", "")))
Dim MyInstance2 As Array = Array.CreateInstance(Type.GetType(f.FieldType.ToString().Replace("[]", "")), obj.Length)
For i As Integer = 1 To obj.Length
        MyInstance2.SetValue(readclasses(MyInstance), i - 1)
Next
MsgBox(MyInstance2.GetValue(0).GetType().GetField("Test").GetValue(MyInstance))

,这些类是以下

的污点
class m2
public mm as integer
end class
Class main2
public int(1) as integer
public test(10) as m2
end class

但是,如果我在myinstance2.setValue之后直接调用msgbox行,它将返回正确的值!

IM使用VS2013与.NET2 Project

编辑:事实证明,所有测试阵列元素具有相同的值(?为什么?)

这是一个示例(.net feddle)

我必须通过调用activator.createinstance在循环中为每个数组元素创建一个新实例

示例