Ich versuche Nested-Klasse Array zu setzen Array.SetValueArray.SetValue nicht
ich einen sehr langen Code für verschachtelte Klasse Verarbeitung haben mit zu arbeiten, aber ich habe ein Problem mit Array einer Klasse (Und ich will Reflexion verwenden)
hier ist mein Code:
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
viele Codes ...
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))
Und Die Klassen werden defind wie die folgenden
class m2
public mm as integer
end class
Class main2
public int(1) as integer
public test(10) as m2
end class
aber wenn ich msgbox Linie direkt nach MyInstance2.SetValue Aufruf gibt es den richtigen Wert!
im mit vs2013 mit .NET2 Projekt
Edit: es stellt sich heraus, dass alle Test Array-Elemente den gleichen Wert haben
Here is an example(.net feddle)