ASP.NETのアプリケーション状態の代わりに静的変数を使用するように計画していますが、これが正しいアプローチかどうか疑問に思っています。
[Global.asax.cs]
...
public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
}
...
private static Dictionary<string, object> cacheItems = new Dictionary<string, object>();
private static object locker = new object();
public static Dictionary<string, object> CacheItems
{
get
{
lock (locker)
{
return cacheItems;
}
}
set
{
lock (locker)
{
cacheItems = value;
}
}
}
public static void RemoveCacheItem(string key)
{
cacheItems.Remove(key);
}
...
}
ご覧のとおり、自動的に作成されたGlobal.asax(およびコードビハインド)ファイルを使用しています。いくつかの静的変数とメソッドを追加しました。私はこのように後でそれらを使用することができます:
[some .cs file]
foreach(KeyValuePair<string, object> dictItem in Global.CacheItems)
{
...
これは正しい方法ですか、それとも既存のグローバルの代わりに新しいクラスを作成する必要がありますか?新しいクラスを作成する必要がある場合、どのように、どこでそれを行うことができますか?