特定のオブジェクト内のすべてのフィールドを取得するために、Reflectionクラスを使用しています。ただし、私の問題は、フィールドが次のように通常のクラス内にある場合に完全に機能することです。
class test
{
string test1 = string.Empty;
string test2 = string.Empty;
}
ここで、test1とtest2の両方を取得します。私の問題は、抽象化を使用しているため、いくつかのクラスを組み合わせていることです。
私は次のようなものを手に入れました:
class test3 : test2
{
string test4 = string.Empty;
string test5 = string.Empty;
}
class test2 : test1
{
string test2 = string.Empty;
string test3 = string.Empty;
}
class test1
{
string test0 = string.Empty;
string test1 = string.Empty;
}
しかし、それを実行すると、からフィールドが返されませんGetType().GetFields(BindingFlag.Default)
。
これらのフィールドのすべてに、プロパティがget; set;
付加されています。コードを実行すると、プロパティはtest1に戻りますが、実際のフィールドは取得しません。
これは私がフィールドを取得しようとしているコードです:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Default);
foreach (FieldInfo field in fields)
私も試しました:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.NonPublic
| BindingFlags.Static);
プロパティに同じコードを使用します。
PropertyInfo[] properties = Obj.GetType().GetProperties(BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.NonPublic
| BindingFlags.Static);
foreach (PropertyInfo property in properties)
抽象化されたクラスからプロパティを取得するが、フィールドからは取得しない理由はありますか?