Tengo A clase:
public abstract class A { } Y luego tengo la clase B que se deriva de ella:
public sealed class B : A { public void SomeMethod() { var method = this.GetType().GetMethod("AddText"); } private void AddText(string text) { ... } } ¿Por qué GetMethod devuelve nulo?
var methodInfo = this.GetType().GetMethod("AddText", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(string) }, null);Su método tiene un parámetro, debe usar la sobrecarga que acepta una matriz de tipos para los tipos de parámetros y las banderas de enlace.
En .NET Method, las firmas se basan en su nombre, su tipo de devolución y sus parámetros.
Entonces, si su método tiene parámetros, debe decirle a Reflection qué tipos de parámetros tiene a través de Type[].
De manera predeterminada, Reflection solo buscará métodos públicos.
Debe pasar BindingFlags.Instance | BindingFlags.NonPublic .