我正在尝试使用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在循环中为每个数组元素创建一个新实例
示例