我想通過使用一些ASP.NET MVC對象,特別是HttpContextWrapper,使現有的ASP.NET Web窗體應用程序更多的單元可測試。我見過它的用法的例子,他們總是創建一個新的對象。我使用Reflector反彙編源代碼,並看到它所做的就是存儲傳遞的HttpContext。但我很好奇是否總是創建一個HttpContextWrapper的新實例是安全的,還是按照某種方式遵循單例模式?下面是我用我的應用程序總是創建一個新的HttpContextWrapper是否安全?
public static class AppHttpContext {
public static HttpContextBase Current { get { return Getter(); } }
public static void SetContext(Func<HttpContextBase> getter) {
Getter = getter;
}
private static Func<HttpContextBase> Getter =() => new HttpContextWrapper(HttpContext.Current);
}
類我用它類似於HttpContext.Current
AppHttpContext.Current.Session["blah"] = "something";
像這樣的包裝通常用來簡單地將unmockable對象包裝成可嘲弄的對象。這意味着他們的建設是微不足道的和不相關的。所以就去創建它們吧。 :) – bzlm 2010-10-22 13:23:56