Wir haben eine Klasse mit einer Abhängigkeit von HttpContext
.
Wir haben es so implementiert:
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% Ich würde keine direkte Abhängigkeit von HttpContextBase
nehmen. Ich würde stattdessen einen Wrapper erstellen und die benötigten Bits verwenden:
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% 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:
Zusätzlich, wenn Sie HttpRequestBase
benötigen (was ich am häufigsten verwende) und HttpResponseBase
, können Sie sie wie folgt registrieren:
Sie können HttpContextBase
, HttpRequestBase
und HttpResponseBase
in Unit-Tests ohne benutzerdefinierte Wrapper leicht vortäuschen.
Tags und Links c# asp.net inversion-of-control httpcontext unity-container