Я использую классы 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)
Есть идеи, почему я получаю свойства от абстрагированных классов, а не от полей?