¿Es posible anular un método privado utilizando Reflection en .NET 3.5?Anulación de un método privado con Reflection
Respuesta
Bueno, tendría que ser virtual
a ser posible anularlo (escribiendo un tipo dinámico que hereda de la clase), y no se puede tener un private virtual
(no tiene sentido). Quizás pueda anular un internal virtual
, pero sospecho que incluso esto puede afectar a los problemas de seguridad. Entonces, finalmente, yo diría que no.
No utilizando Reflection. Necesita usar algún tipo de AOP.
No utilizando solo Reflection. Quizás lo mejor que podría hacer es usar Reflection, combinado con Reflection.Emit o CodeDom para duplicar la clase en un nuevo espacio de nombres. Cuando encuentre el método privado que desea reemplazar, no lo copie, emite su reemplazo.
Sin embargo, hay muchas técnicas que puede usar un desarrollador que hacen que esta técnica sea mucho, mucho más difícil. Romper la implementación de la clase en muchas clases privadas o internas es una de ellas.
Nota: usando el CodeDom usted tendría que construir el gráfico en la memoria, compilarlo y luego cargar el ensamblaje resultante.
Esto es probablemente MUCHO más problema de lo que vale.
La otra forma de hacerlo sería usar Reflector para desmontar la clase, tomar el código y crear su propia clase con el método replace. Una vez más, existen importantes obstáculos técnicos y legales que superar. Sin embargo, puede aprender mucho del código desmontado.
Typemock Isolator se supone que es capaz de hacer esto, pero lo hace a través de las API .NET profiler (según Roy Osherove en The Art of Unit Testing).
- 1. Busque un campo privado con Reflection?
- 2. ¿Cómo invoco un método estático privado usando reflection (Java)?
- 3. Confundir "reemplazar un método privado"
- 4. ¿Prueba si un método es una anulación?
- 5. usando Jasmines spyon con un método privado
- 6. Cómo especificar un método privado
- 7. Anulación de método
- 8. Reflection GetMethod. seleccione un método más específico
- 9. Anulación de un método estático en Python
- 10. ¿Alguna manera de invocar un método privado?
- 11. ¿Cómo crear un método de clase privado?
- 12. ¿Cómo ejecutar un método estático privado con parámetros opcionales a través de la reflexión?
- 13. ¿Puede un método nativo llamar a un método privado?
- 14. Método privado llamado error
- 15. implementar una interfaz con un método privado en vb.net
- 16. Usar Reflection para llamar a un método de una propiedad
- 17. Estado del método de captura usando Reflection
- 18. ¿Cómo defino dinámicamente un método como privado?
- 19. Método de anulación de Jython con el mismo nombre
- 20. Firma del método real usando Reflection
- 21. Java: método de anulación o sobrecarga?
- 22. Cómo usar Reflection para invocar un método sobrecargado en .NET
- 23. Llamadas de método de anulación en Ruby?
- 24. Método virtual privado en C++
- 25. Método de anulación dentro del widget jquery
- 26. Anulación de Java Método Object equals()
- 27. Llamar a un método privado xxx usando self.xxx() desde otro método privado que da como resultado el error "método privado` xxx 'llamado "
- 28. ¿Cómo crear un método de anulación usando Mono.Cecil?
- 29. Anulación de un método en objetos creados estáticamente
- 30. obtiene un error de método privado en Ruby on Rails
... o puede que no sepa nada, si el código está ofuscado. –
de ustedes podría aprender que algún código está ofuscado :-) –