Estoy usando las clases Reflection para obtener todos los campos dentro de un objeto determinado. Mi problema sin embargo es que funciona perfectamente cuando los campos están dentro de una clase normal, como:No obteniendo campos de GetType(). GetFields con BindingFlag.Default
class test
{
string test1 = string.Empty;
string test2 = string.Empty;
}
Aquí tengo tanto test1 y test2, mi problema es que yo uso la abstracción y por lo tanto varias clases combinadas.
que tiene algo como:
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;
}
Pero cuando corro, yo no obtienen los campos detrás de la GetType().GetFields(BindingFlag.Default)
.
Todos los campos también tienen una propiedad, get; set;
adjunta. Cuando ejecuto el código, devuelvo las propiedades a test1 pero no a los campos reales.
Este es el código que estoy tratando de conseguir los campos con:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Default);
foreach (FieldInfo field in fields)
También he intentado:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.NonPublic
| BindingFlags.Static);
Puedo utilizar el mismo código para las propiedades:
PropertyInfo[] properties = Obj.GetType().GetProperties(BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.NonPublic
| BindingFlags.Static);
foreach (PropertyInfo property in properties)
¿Alguna idea de por qué obtengo las propiedades de las clases abstractas pero no de los campos?
No supondría una gran diferencia, ya que los campos no son estáticos. –
Intenté: FieldInfo [] fields = Obj.GetType(). GetFields (BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.FlattenHierarchy); Pero aún así no funciona. – Patrick
Bueno, probé: FieldInfo [] fields = Obj.GetType(). GetFields (BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.FlattenHierarchy); Pero todavía no hay suerte. – Patrick