2010-12-13 6 views
3

私は現在、ASP.NET MVCアプリケーションを開発中です。セッション名のようなグローバルな文字列定数をすべて保持する予定の静的クラスを作成する予定です。別ファイルのグローバル定数。いいアイデアですか?

私が躊躇する理由は、それが匂いのようなものだからですが、私はより良い選択肢に気づいていません。

グローバル定数を定義する方法を教えてください。

+0

何が価値があるのか​​、それは私に悪い匂いがしません。 –

答えて

4

ヴァディム、

は、私は正確に行います。その後、厳密に型指定されたアクセサの利点を得て、必要に応じてオーバーライドをメソッドの形で追加することができます。

public static class Config 
{ 
    private const string NotSet = "**VALUE NOT SET**"; 
    private const int pageSize = 5; 

    public static string CustomCache 
    { 
     get 
     { 
      return ConfigurationManager.AppSettings["CustomCache"] ?? NotSet; 
     } 
    } 

    public static int PageSize 
    { 
     get 
     { 
      // simple default - no setter 
      return pageSize; 
     } 
    } 
} 

典型的な使い方::、いくつかの設定は、web.configファイルではなく、強いとアプリの設定から「第二世代」と呼ばれている上記のクラスで

items = _repository.GetPaged(pageNumber, Config.PageSize) 

ここ

はスニペットですランタイムエラーチェックなどを確実にするためにクラスに入力します。その他は、クラス内で定義された純粋な静的な設定です。

これは私の考えでは、このアプローチが魅力と実力の両方を提供するという上記のすべてを行う柔軟性です。

+0

私が見る限り、CustomCacheはweb.configから値を取得し、設定がない場合は、クラスに記述されているNotSet値を返します。これに加えて、他の定数をここで代入してPageSizeプロパティとして直接使用することができます。すべて本当ですか? –

+0

正しい - あなたはもちろん、パブリックの文字列定数を割り当て、それらに強い型付けの恩恵を受けることができます。この回答は5年前のalmsotからのものだと信じられません - それはどこに行ったのですか? –

+0

:)良いです。私はhttp://stackoverflow.com/questions/30255539/using-constant-for-defining-property-format-in-mvc/30255752?noredirect=1#comment48615812_30255752に同様の問題があります上記のアプローチが私の必要性、すなわちランタイム、コンパイル時の状態に適しているかどうかはわかりません。私の質問をチェックしてください。一方、私にとってもっと適しているなら、定数の代わりにreadonlyを使うことも考えられます。あなたは私を明確にしてくれますか? (そのページにコードを投稿することができます)。ありがとう... –

1

もう1つの方法は、リソース(.resx)ファイルを作成することです。あるいは、これらが設定可能な値であれば、web.configまたはデータベース設定テーブルに入ることができます。

0

この目的でglobal.asaxファイルを使用できます。それはMVCまたはWebフォーム

private static int var ; 

public static int VAR 
{ 
    get { return var ; } 
} 
+1

global.asaxや別のクラスに定数を入れることに大きな違いはありません。あなたは、global.asaxに定数を入れる利点があるかどうか教えていただけますか? – Vadim

+1

コードやXMLを投稿する場合は、テキストエディタでこれらの行をハイライト表示し、エディタツールバーの[コード]ボタン(101 010)をクリックして、フォーマットや構文を強調表示してください! –

0

であるかどうか、私は多くの場合、またはまったく変更しないでください(ダッシュボードにより変更することができ、サイトの設定のための)データベースエントリとサイト設定のweb.configのappSettings(の組み合わせを使用しますすなわち、一定)。あなたが提案し、この目的のために静的なクラスを使用するよう

+0

私の場合は、定数の値がまったく変更されないと思います。 appSettingsと別の静的クラスとの間に大きな違いはありません。私が何かを逃しているかどうか教えてください。 – Vadim

関連する問題