2010-11-28 10 views
1

Ich verwende eine Strukturkarte in meinem Projekt und ziemlich oft bleibe ich in einer Erweiterungsmethode stecken, wo ich eine Instanz eines Objekts brauche.Code Design Beratung

Die erste Methode ist, mein Repository in die Erweiterungsmethode zu senden, und die andere Methode besteht darin, ein statisches Repository zu haben und es in meiner Methode so zu initialisieren.

public static class SomeExtensions { 
    static IRepository _repository; 
    public static string ExtensionsMethod1(this HtmlHelper helper) { 
     _repository = ObjectFactory.GetIntance<IRepository>(); 
     // do stuff 
    } 
} 

Was ist in diesem Szenario am besten zu tun?

Antwort

3

wirklich nicht die Frage zu beantworten, nur dieser spezifische Code-Schnipsel:

Sie sollen nicht einen Repository in der ASP.NET MVC benutzerdefinierten HTML-Hilfsmethoden verwenden. Dies ist die Verantwortung des Controllers, das Modell zu manipulieren. HTML-Hilfsmethoden dienen zum Generieren kleiner HTML-Snippets.

Was den allgemeineren Fall betrifft, dann sind Erweiterungsmethoden nur syntaktischer Zucker für einfache statische Methoden, so dass Sie keine Abhängigkeiten in sie injizieren können.

+0

In diesem speziellen Fall rendere ich ein Navigationsmenü, also muss ich alle Kinder, Nachkommen und so für jedes Element abholen, Vielleicht ist es angemessener, stattdessen ein komplettes hierarchisches Objekt an die Ansicht zu senden? – Marcus

+1

@Marcus: Ja Build das View-Modell in der Steuerung, haben keine HTML-Helfer Verweise auf Repositories. – cspolton