Ich versuche, die Feldinformationen eines Array-Werts aus einer Struktur zu erhalten. Bis jetzt habe ich folgendes, aber ich sehe nicht, wie ich die Information bekommen kann, die ich will.Wie bekomme ich die FieldInfo eines Arrayfeldes?
[StructLayout(LayoutKind.Sequential)]
public struct Test
{
public byte Byte1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=3)]
public Test2[] Test1;
}
BindingFlags struct_field_flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly;
FieldInfo[] all_struct_fields = typeof(Test).GetFields(struct_field_flags);
foreach (FieldInfo struct_field in all_struct_fields)
{
if(struct_field.FieldType.IsArray)
{
// Get FieldInfo for each value in the Test1 array within Test structure
}
}
Also, wenn ich tat:
Type array_type = struct_field.FieldType.GetElementType();
Dies würde Test2 Typ zurückgeben, aber ich nicht den Typ des Arrays, ich will die Fieldinfo oder Felder dieser Struktur, so kann ich Werte von darin.
würde Ich mag die Fieldinfo von Test2 bekommen so dass ich Werte innerhalb dieser Struktur setzen konnte – SwDevMan81
Für Test1 ja, aber ich will es für das Array von Test2's. Wenn es ein Array ist, möchte ich die FieldInfo des Array-Typs erhalten, so dass ich field.SetValue (obj, value) für den Test1-Wert tun kann. – SwDevMan81
Sie haben mich irgendwo zwischen Test1 und Test2 verloren ... wenn Sie jede Instanz innerhalb des Arrays meinen, dann behandeln Sie jede Instanz als ein Objekt ... dann haben Sie GetType() usw. Oder verwenden Sie arr.GetType(). GetElementType(). Aber es gibt kein Feld, das * innerhalb * des Arrays zeigt. –