c# - studio - Obtener propiedades privadas/Método de clase base con reflejo
herencia y composicion c# (2)
Con Type.GetProperties()
puede recuperar todas las propiedades de su clase actual y las propiedades public
de la clase base. ¿Es de alguna manera posible obtener las propiedades private
de la clase base también?
Gracias
class Base
{
private string Foo { get; set; }
}
class Sub : Base
{
private string Bar { get; set; }
}
Sub s = new Sub();
PropertyInfo[] pinfos = s.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
foreach (PropertyInfo p in pinfos)
{
Console.WriteLine(p.Name);
}
Console.ReadKey();
Esto solo imprimirá "Bar" porque "Foo" está en la clase base y es privado.
Itere a través de los tipos base (type = type.BaseType), hasta que type.BaseType sea nulo.
MethodInfo mI = null;
Type baseType = someObject.GetType();
while (mI == null)
{
mI = baseType.GetMethod("SomePrivateMethod", BindingFlags.NonPublic | BindingFlags.Instance);
baseType = baseType.BaseType;
if (baseType == null) break;
}
mI.Invoke(someObject, new object[] {});
Para obtener todas las propiedades (públicas + privadas / protegidas / internas, estáticas + instancia) de un Type someType
determinado Type someType
(tal vez usando GetType()
para obtener someType
):
PropertyInfo[] props = someType.BaseType.GetProperties(
BindingFlags.NonPublic | BindingFlags.Public
| BindingFlags.Instance | BindingFlags.Static)