したがって、このオブジェクトには複数のレベルのサブクラスがあります(実際のオブジェクトではなく、構造を伝えるための抽象化):
public class MasterType
{
public TypeA typeA = new TypeA();
public TypeB typeB = new TypeB();
public class TypeA
{
public SubTypeA subTypeA = new SubTypeA();
public SubTypeB subTypeB = new SubTypeB();
public class SubTypeA
{
public int Field1 = 10;
}
public class SubTypeB
{
public int Field2 = 20;
}
}
public class typeB
{
public int Field3 = 30;
}
}
TypeA のフィールドを抽出しようとしましたが、そのサブクラス (SubTypeA と SubTypeB) は次のようになります。
foreach (var t in MasterType.TypeA.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.FlattenHierarchy))
{
foreach (var field in t.FieldType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
{
Console.WriteLine(field.Name + " | " + field.GetValue(t.FieldType));
}
}
しかし、私はこの例外を受け取ります:
ArgumentException: Field 'Field1' defined on type 'SubTypeA' is not a field on the target object which is of type 'MonoType'.
t の FieldType を出力すると、期待される結果 'SubTypeA' などが得られます
。何か間違っていますか?