2010-12-13 54 views
3

我目前正在研究ASP.NET MVC應用程序。我打算創建一個靜態類,我打算保存所有全局字符串常量,如會話名稱。全局常量在單獨的文件中。這是個好主意嗎?

我猶豫的原因是因爲它有一種氣味,但我沒有意識到更好的選擇。

請讓我看看如何定義全局常量。

+0

對於什麼是值得的,它不會讓我聞起來不好。 – 2010-12-13 20:47:09

回答

4

vadim,

我完全按照您的建議使用靜態類來達到此目的。然後,您可以獲得強類型訪問器的優勢,並且可以添加覆蓋(以方法的形式),如果您需要它們。

這裏有一個片段:

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; 
     } 
    } 
} 

典型用法:

items = _repository.GetPaged(pageNumber, Config.PageSize) 
在上面的類

,一些設置被稱爲「第二代」在web.config中,但具有很強的應用程序設置鍵入類以確保運行時錯誤檢查等。其他類純粹是在類中定義的靜態設置。

這是靈活性做以上所有(在我看來)給這種方法既吸引力和真正的實力。

+0

就我所見,CustomCache從web.config中檢索值,如果沒有配置,則返回類中描述的NotSet值。除此之外,其他常量值可以在此處分配並直接用作PageSize屬性。真的嗎? – 2015-05-15 11:09:48

+0

正確 - 你當然可以分配公共字符串常量並獲得強鍵入的好處。不能相信這個答案是從5年前的艾姆索特 - 它在哪裏去了:) – 2015-05-15 12:12:04

+0

:)好。我有一個類似的問題,在http://stackoverflow.com/questions/30255539/using-constant-for-defining-property-format-in-mvc/30255752?noredirect=1#comment48615812_30255752和據我看到的答案,我不確定上述方法是否適合我的需要,即運行時,編譯時狀態。你能檢查我的問題嗎?另一方面,如果它更適合我,我還可以考慮使用readonly而不是常量。請你澄清我嗎? (您可以在該頁面上發佈您的代碼)。謝謝... – 2015-05-15 12:16:37

1

另一種選擇是創建資源(.resx)文件。或者,如果這些值是可配置值,則可以使用web.config或數據庫配置表。

0

你可以使用global.asax文件來達到這個目的 - 我會使用它們的訪問器例如

private static int var ; 

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

在將常量放在global.asax或其他類中時,我看不出有什麼區別。你能告訴我,如果將常量放在global.asax中有優勢嗎? – Vadim 2010-12-13 20:24:52

+1

如果您發佈代碼或XML,**請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼」按鈕(101 010),以良好地格式化和語法突出顯示它! – 2010-12-13 22:11:08

0

無論是MVC或Web表單,我使用數據庫條目(站點設置,可以通過儀表板進行修改)和web.config中的appSettings(網站設置的組合不經常或根本改變,即恆定)。

+0

在我的情況下,我不希望常數的值被改變。我沒有看到appSettings或單獨的靜態類之間的巨大差異。讓我知道如果我錯過了什麼。 – Vadim 2010-12-13 20:29:19

相關問題