que estaba leyendo acerca de los métodos de extensión en C# 3.0. El texto que estoy leyendo implica que un método de extensión con la misma firma como un método en la clase está extendiendo sería el segundo en orden de ejecución - es decir, el método de la clase sellada se llama. Si este es el caso, ¿cómo se puede extender la clase sellada?Si un método de extensión tiene la misma firma como un método en la clase cerrada, lo que es la prioridad de llamadas?
Respuesta
De hecho, el método real tiene prioridad sobre el método de extensión. Y solo para dejarlo en claro: "orden de ejecución" sugiere que ambos puedan ser llamados; será invocada solamente el método original. Tal vez elegir otro nombre/firma; no puedes usar métodos de extensión para monkey-patch, si esa es tu intención.
Si hay alguna clase base/interfaz (que el tipo implementa) que no tiene tiene este método, ¿podría quizás lanzarlo allí ...?
usar otro método de firma. Los métodos de extensión implican que está ampliando la clase sellada con nuevas funcionalidades y no anulando las que ya están implementadas.
Los métodos de extensión tienen una semántica "ocultar-por-nombre" con los miembros de instancia de un tipo. Esto significa que cualquier miembro de instancia accesible en un tipo siempre sombreará cualquier método de extensión con el mismo nombre, incluso si el método de extensión es mejor. Como resultado, si alguna vez se agrega un miembro de instancia a un tipo con el mismo nombre que un método de extensión, entonces el método de extensión puede volverse incable.
Para más detalles, echa un vistazo a este post: Extension Methods Best Practices (Extension Methods Part 6)
- 1. Simula un método en la misma clase que se prueba
- 2. Decorar un método que ya es un método de clase?
- 3. Pasar un método de extensión a un método que espera un delegado. ¿Como funciona esto?
- 4. método de extensión llamar a otro en la misma clase de extensión - ¿buen diseño?
- 5. Compruebe si una clase tiene un método
- 6. Método creado con la firma como List
- 7. ¿Puede un método ser un decorador de otro método de la misma clase?
- 8. Imprimir la firma completa de un método de un MethodInfo
- 9. Dos interfaces con la misma firma de método implementada en la clase Java
- 10. comprobando si se define un método en la clase
- 11. Comprobar si la clase tiene método en PHP
- 12. C++, la clase como parámetro a un método, no template
- 13. ¿Por qué la clase python datetime tiene un método 'fromtimestamp', pero no un método 'totimestamp'? clase
- 14. Compruebe si la clase tiene el método estático
- 15. ¿Por qué una clase no puede extender rasgos con el método de la misma firma?
- 16. Llamando a un método desde otro método en la misma clase en C++
- 17. Llamar a un método como un método de extensión requiere más referencia que llamar directamente
- 18. Enlazar llamadas de método múltiple (que cada una tiene firmas diferentes) en un solo controlador
- 19. La llamada al método Spring @Transaction por el método dentro de la misma clase, ¿no funciona?
- 20. método de extensión para extender la clase estática
- 21. define un cierre como método de la clase
- 22. llamadas Rubí método declarado en el cuerpo de la clase
- 23. ¿Cuál es la elipsis (...) para la firma de este método?
- 24. método de extensión para un método C#
- 25. Cómo crear un método de extensión en la colección genérica
- 26. FormatProvider vs. método de extensión contra la nueva clase
- 27. llamando a un método desde otro método en la misma clase PHP
- 28. C# - ¿Es posible reemplazar un método en una clase base dentro de la misma clase (NO una clase derivada)?
- 29. cheque si el objeto tiene método con la firma del delegado
- 30. 'volátil' en la firma del método?
HA HA! Parche de mono ... es una nueva. Ok, gracias, estaba pensando que si estaba en lo correcto se rompería sellado y eso vencería el punto de usar sellado. –
@Scott - también conocido como pato de perforación. No es broma. –