Я использую классы Reflection, чтобы получить все поля внутри определенного объекта. Моя проблема, однако, является то, что она прекрасно работает, когда поля внутри обычный класс, как:Не получать поля из GetType(). GetFields with BindingFlag.Default
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)
Любые идеи, почему я получаю свойства от абстрактных классов, но не полей?
В любом случае не будет иметь большого значения, так как поля не являются статическими. –
Я пробовал: FieldInfo [] fields = Obj.GetType(). GetFields (BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.FlattenHierarchy); Но он все еще не работает. – Patrick
Ну, я попробовал: FieldInfo [] fields = Obj.GetType(). GetFields (BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.FlattenHierarchy); Но все равно не повезло. – Patrick