我目前正在研究ASP.NET MVC應用程序。我打算創建一個靜態類,我打算保存所有全局字符串常量,如會話名稱。全局常量在單獨的文件中。這是個好主意嗎?
我猶豫的原因是因爲它有一種氣味,但我沒有意識到更好的選擇。
請讓我看看如何定義全局常量。
我目前正在研究ASP.NET MVC應用程序。我打算創建一個靜態類,我打算保存所有全局字符串常量,如會話名稱。全局常量在單獨的文件中。這是個好主意嗎?
我猶豫的原因是因爲它有一種氣味,但我沒有意識到更好的選擇。
請讓我看看如何定義全局常量。
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中,但具有很強的應用程序設置鍵入類以確保運行時錯誤檢查等。其他類純粹是在類中定義的靜態設置。
這是靈活性做以上所有(在我看來)給這種方法既吸引力和真正的實力。
就我所見,CustomCache從web.config中檢索值,如果沒有配置,則返回類中描述的NotSet值。除此之外,其他常量值可以在此處分配並直接用作PageSize屬性。真的嗎? – 2015-05-15 11:09:48
正確 - 你當然可以分配公共字符串常量並獲得強鍵入的好處。不能相信這個答案是從5年前的艾姆索特 - 它在哪裏去了:) – 2015-05-15 12:12:04
:)好。我有一個類似的問題,在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
另一種選擇是創建資源(.resx)文件。或者,如果這些值是可配置值,則可以使用web.config或數據庫配置表。
你可以使用global.asax文件來達到這個目的 - 我會使用它們的訪問器例如
private static int var ;
public static int VAR
{
get { return var ; }
}
在將常量放在global.asax或其他類中時,我看不出有什麼區別。你能告訴我,如果將常量放在global.asax中有優勢嗎? – Vadim 2010-12-13 20:24:52
如果您發佈代碼或XML,**請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼」按鈕(101 010),以良好地格式化和語法突出顯示它! – 2010-12-13 22:11:08
無論是MVC或Web表單,我使用數據庫條目(站點設置,可以通過儀表板進行修改)和web.config中的appSettings(網站設置的組合不經常或根本改變,即恆定)。
在我的情況下,我不希望常數的值被改變。我沒有看到appSettings或單獨的靜態類之間的巨大差異。讓我知道如果我錯過了什麼。 – Vadim 2010-12-13 20:29:19
對於什麼是值得的,它不會讓我聞起來不好。 – 2010-12-13 20:47:09