Domanda

So che potrebbe essere sciocco, ma vorrei che i guru lo chiarissero per me ... Perché questo metodo è definito come statico ..

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);
    }
}
È stato utile?

Soluzione

è statico perché non è necessario che sia un metodo direttamente correlato alle istanze della classe, ma piuttosto un metodo che può essere utilizzato in un contesto statico.

In altre parole, influenza solo il parametro " route " ;, non usa alcun campo o membro di classe, quindi ha senso che sia reso statico.

Altri suggerimenti

Il metodo è statico perché può essere (come sottolinea Mark) ... ma penso che il vero motivo dietro il team ASP.NET che lo rende statico (mentre stai cercando di capire la tua domanda sul perché ? ') è stato quello di rendere più semplice il test unitario dei tuoi percorsi.

ASP.NET MVC Pro di Steve Sanderson ha una buona sezione (con metodi di supporto) per testare i tuoi percorsi. E penso che il progetto MVC Contrib abbia anche alcuni metodi di supporto per test unitari dei tuoi percorsi.

HTHS
Charles

Per me ha senso averlo statico in modo da poter accedere alle rotte (possibilmente) di un'altra applicazione senza dover istanziare la classe dell'app stessa. Puoi quindi utilizzare questi percorsi per creare URL di azioni, ecc., Da un'applicazione all'altra.

Hai solo bisogno di una tabella di route e hai bisogno della stessa utilizzata in tutta l'applicazione. Rendendolo statico significa che ottieni un insieme globale di valori che sono definiti in un unico posto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top