構造体内から配列値のフィールド情報を取得しようとしています。これまでのところ、次のものがありますが、必要な情報を取得する方法がわかりません。
[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
}
}
だから私がした場合:
Type array_type = struct_field.FieldType.GetElementType();
これは Test2 タイプを返しますが、配列のタイプは必要ありません。その構造の FieldInfo または Fields が必要なので、その中から値を設定できます。