0
我喜歡HTTPContext.Current的工作方式。有什麼辦法可以實現一個與HTTPContextBase沒有關係的類似對象嗎?基本上,我想創建一個UserContext。然後在DAL中,我可以簡單地查詢此UserContext以獲取用戶特定的信息。該對象必須是線程安全的並且可以在ASP.NET環境(THREAD STATIC屬性不起作用)和控制檯/庫環境中工作。像對象一樣的HttpContext
我喜歡HTTPContext.Current的工作方式。有什麼辦法可以實現一個與HTTPContextBase沒有關係的類似對象嗎?基本上,我想創建一個UserContext。然後在DAL中,我可以簡單地查詢此UserContext以獲取用戶特定的信息。該對象必須是線程安全的並且可以在ASP.NET環境(THREAD STATIC屬性不起作用)和控制檯/庫環境中工作。像對象一樣的HttpContext
HttpContext.Current是一個單例。線程安全實現是這樣的:
using System;
public sealed class Singleton
{
private static volatile Singleton instance;
private static object syncRoot = new Object();
private Singleton() {}
public static Singleton Current
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}
但是使用Singleton模式不是好主意。這幾乎是「反模式」。這阻礙了單元測試。而不是更好地使用依賴注入容器。 http://en.wikipedia.org/wiki/Dependency_injection
爲什麼`[ThreadStatic]`不能工作? – SLaks 2011-01-13 00:35:14
ThreadStatic將不起作用,因爲如果它位於ASP.NET環境中,則可能發生線程切換。 – choudeshell 2011-01-13 01:24:59