Pregunta

Sé que esto podría ser una tontería, pero me gustaría que los gurús me lo aclararan ... ¿Por qué este método se define como estático?

public class MvcApplication : System.Web.HttpApplication
{
    /* Why this method is declared as static? */
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

    }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}
¿Fue útil?

Solución

es estático porque no tiene que ser un método directamente relacionado con las instancias de la clase, sino un método que se puede usar en un contexto estático.

En otras palabras, solo afecta al parámetro " rutas " ;, no utiliza ningún campo de clase o miembro, por lo que tiene sentido que se haga estático.

Otros consejos

El método es estático porque puede ser (como señala Mark) ... pero creo que la verdadera razón detrás del equipo de ASP.NET es que es estático (ya que intenta abordar su pregunta de 'por qué' ? ') fue para facilitar las pruebas unitarias de sus rutas.

ASP.NET MVC Pro de Steve Sanderson tiene una buena sección (con métodos de ayuda) sobre cómo probar sus rutas. Y creo que el proyecto MVC Contrib también tiene algunos métodos de ayuda para realizar pruebas unitarias de sus rutas.

HTHs
Charles

Para mí, tiene sentido tenerlo estático para que pueda acceder a las rutas de (posiblemente) otra aplicación sin tener que instanciar la clase de la aplicación en sí. Luego puede usar estas rutas para crear URL de acción, etc., de una aplicación a otra.

Solo necesita una tabla de rutas y necesita la misma utilizada en toda la aplicación. Hacerlo estático significa que obtienes un conjunto global de valores que se definen en un solo lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top