0

App_Codeフォルダーに静的クラスがあります。

public static class SiteData
{
    public static string AdminEmail{ get; set; }
}

クラスには、ユーザー間で共有される静的メンバーを含めることができます。この例では、 を使用しAdminEmailました。

を初期化する2つの方法を知っていますAdminEmail

解決策 1 :

_AppStart.cshtml を作成する (C#)

@{
    SiteData.AdminEmail = "admin@mydomain.com";
}    

解決策 2 :

SiteDataクラスに静的コンストラクターを作成する

public static class SiteData
{
    public static string AdminEmail{ get; set; }
    static SiteData()
    {
        AdminEmail = "admin@mydomain.com";
    }
}

どちらのソリューションもAdminEmail、アプリケーションの開始時に を初期化します。ここに私の質問があります:

1) この状況では、どの解決策がより適切ですか?

2) 両方のソリューションの長所と短所は?

3)静的クラスがそのタスクを実行できる場合、ASP.NETの AppStart の使用は何ですか?

4

2 に答える 2

1

私が言えることから、AppStart.cshtml は Web アプリケーションの残りの部分とより統合されているようです。 http://www.asp.net/web-pages/tutorials/working-with-pages/18-customizing-site-wide-behavior 単純な静的コンストラクターでは、Web 環境に関する知識がはるかに少なくなります。

于 2013-07-24T02:53:19.120 に答える
1

AppStateアプリケーション レベル (グローバル) 変数は、Web ページ フレームワークのクラスを使用して定義できます。これは、Session に似た単純な Dictionary です。App動的エイリアスで参照することもできます。

App.AdminEmail = "admin@mydomain.com";

と同じです

AppState["AdminEmail"] = "admin@mydomain.com";

2 つのアプローチを混在させることができます。

これらを使用する主な欠点は、強く型付けされていないことです。型に大きく依存するフレームワークではdynamic、それは問題にならないかもしれません。

主な利点は、AppState (または App) が非常に使いやすく、機能させるために追加の配管を必要としないことです。

Web ページ フレームワークは、開発者の複雑さを軽減するように設計されています。AppStart は、global.asax の Application_Start イベント ハンドラーを簡略化したものです。

于 2013-07-25T09:32:41.247 に答える