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