Wie implementiere ich diese (HttpContext) Abhängigkeit in Unity?

7

Wir haben eine Klasse mit einer Abhängigkeit von HttpContext . Wir haben es so implementiert:

%Vor%

Nun möchte ich die Klasse SiteVariation über Unity instanziieren, damit wir einen Konstruktor erstellen können. Aber ich weiß nicht, wie ich dieses neue HttpContextWrapper(HttpContext.Current)) in Unity auf die Art und Weise konfigurieren kann.

ps Dies ist die Konfigurationsweise, die wir verwenden

%Vor%     
Michel 01.11.2011, 14:49
quelle

2 Antworten

11

Ich würde keine direkte Abhängigkeit von HttpContextBase nehmen. Ich würde stattdessen einen Wrapper erstellen und die benötigten Bits verwenden:

%Vor%

dann die Implementierung:

%Vor%

Auf diese Weise stützt sich Ihre Klasse nur auf einen Wrapper und benötigt nicht den eigentlichen HttpContext. Macht es viel einfacher zu injizieren und viel einfacher zu testen:

%Vor%     
BFree 01.11.2011, 15:15
quelle
25

Microsoft hat bereits großartige Wrapper und Abstraktionen um HttpContext , HttpRequest und HttpResponse , die in .NET enthalten sind, gebaut, also würde ich definitiv diese direkt verwenden, anstatt sie selbst zu verpacken.

Sie können Unity für HttpContextBase konfigurieren, indem Sie InjectionFactory wie folgt verwenden:

%Vor%

Zusätzlich, wenn Sie HttpRequestBase benötigen (was ich am häufigsten verwende) und HttpResponseBase , können Sie sie wie folgt registrieren:

%Vor%

Sie können HttpContextBase , HttpRequestBase und HttpResponseBase in Unit-Tests ohne benutzerdefinierte Wrapper leicht vortäuschen.

    
Christian Fredh 22.03.2014 16:49
quelle