私は構造体の中から配列値のフィールド情報を取得しようとしています。これまでのところ、私は次のことを持っていますが、私が望む情報を得る方法は分かりません。配列フィールドのFieldInfoを取得するにはどうすればよいですか?
[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またはその構造体のフィールドは、私からの値を設定することができますしたいですその中で。
私はTest2をするのFieldInfoを取得したいと思います私はその構造内から値を設定することができます – SwDevMan81
Test1はい、私はTest2の配列のためにそれをします。それが配列の場合は、配列型のFieldInfoを取得して、Test1値のfield.SetValue(obj、value)を実行できるようにしたいと考えています。 – SwDevMan81
あなたはTest1とTest2の間のどこかで私を失ってしまいました...もしあなたが配列の中の各インスタンスを意味するならば、それぞれのインスタンスをオブジェクトとして扱います...次にGetType()などがあります。あるいはarr.GetType()を使います。 ()。しかし、配列の内側に*を指すフィールドはありません。 –