visual studio polimorficos multiple metodos hijo herencia form ejemplos composicion clases clase c# .net reflection

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)