J'essaie d'obtenir les informations de champ d'une valeur de tableau à partir d'une structure. Jusqu'à présent, j'ai ce qui suit, mais je ne vois pas comment obtenir l'infomration que je veux.Comment obtenir le FieldInfo d'un champ de tableau?
[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
}
}
Donc, si je l'ai fait:
Type array_type = struct_field.FieldType.GetElementType();
Ce retournerait Test2 le type, mais je ne veux pas que le type du tableau, je veux que le FieldInfo ou les champs de cette structure afin que je puisse définir des valeurs de à l'intérieur.
Je voudrais obtenir le FieldInfo de Test2 afin que je puisse définir des valeurs à partir de cette structure – SwDevMan81
Pour Test1 oui, mais je le veux pour le tableau de Test2. Si c'est un tableau, je veux obtenir le FieldInfo du type tableau afin que je puisse faire field.SetValue (obj, valeur) pour la valeur Test1. – SwDevMan81
Vous m'avez perdu quelque part entre Test1 et Test2 ... si vous voulez dire chaque instance dans le tableau, alors traitez chaque instance comme un objet ... alors vous avez GetType() etc. Ou utilisez arr.GetType(). GetElementType(). Mais il n'y a pas de champ qui pointe * dans le tableau. –