En ASP.NET MVC, la clase ActionResult
, que es la base de todos los resultados devueltos por los métodos de acción de un controlador, se define como una clase abstracta con el método individual (© Microsoft):Razonamiento detrás de ASP.NET MVC ActionResult es una clase abstracta?
public abstract void ExecuteResult(ControllerContext context);
¿Puede usted pensar en ¿Alguna razón específica para este diseño? En concreto, se parece un poco raro para mí, que
- no hay
IActionResult
interfaz, - y que no se requeriría la clase en absoluto, si había una interfaz de este tipo.
Después de todo, si se trataba de una interfaz en lugar de esa clase abstracta, no habría necesidad de extender una clase base con el fin de crear una nueva ActionResult
- uno sólo tiene que poner en práctica IActionResult
correctamente. En un mundo, un lenguaje erróneo, sin herencia múltiple, esta ventaja me parecería muy importante.
Envié un correo electrónico a Phil Haack (PM en ASP.NET MVC en Microsoft) con un enlace a esta pregunta, espero que encuentre algo de tiempo para explicar en los próximos días. –
Buena idea, gracias. – hangy
¿Hay algún escenario específico en el que esté bloqueado en este caso particular? – Haacked