3

厳密に型指定されたグローバル データを ASP.Net Web ページに格納するためのベスト プラクティスは何ですか。これは要求ごとに一意です。基本的には必要ですWebPageContext.Current.PageDataが、強く型付けされています。

今まで、私は次のようなものを思いつきました:

public sealed class GlobalData
{
    public static GlobalData Current
    {
        get
        {
            if (WebPageContext.Current.PageData["GlobalData"] == null
                || WebPageContext.Current.PageData["GlobalData"].GetType() != typeof(GlobalData))
            {
                WebPageContext.Current.PageData["GlobalData"] = new GlobalData();
            }
            return WebPageContext.Current.PageData["GlobalData"];
        }
    }

    public string SomeData { get; set; }
}

GlobalData.Current.SomeDataこのようにして、すべてのページで自分のデータに簡単にアクセスできました。または、より良い解決策はありますか?

4

1 に答える 1

3

それはかなり良いアプローチです。少し単純化します:

public sealed class GlobalData
{
    public static GlobalData Current
    {
        get
        {
            // soft cast using "as" which will return null if the type is not correct
            var globalData = WebPageContext.Current.PageData["GlobalData"] as GlobalData;
            if (globalData == null)
            {
                // Need to instantiate
                globalData = new GlobalData();
                WebPageContext.Current.PageData["GlobalData"] = globalData;
            }

            return globalData;
        }
    }

    public string SomeData { get; set; }
}
于 2013-06-06T16:11:43.530 に答える