2009-12-19 43 views
0

我有很多全局只讀字符串(大約100),我在我的應用程序中使用它永遠不會改變。我一直在嘗試考慮易於編碼並且對性能沒有太大影響的最佳解決方案。我需要在整個應用程序中使用這些字符串,如下面的示例所示,其中,Relationship只是一個類別,其中值是分組的,而Alternate是字符串值本身。如何實現全局字符串C#

Relationship.Alternate 

我曾經想過創建靜態類的靜態只讀域,靜態類與常量領域,實現Singleton模式,甚至創造和一個輔助方法解析枚舉。任何人都可以就解決這個問題的最佳方式提供一些很好的建議。

+1

字符串的目的是什麼?在哪些情況下他們使用?這些因素可能會影響解決方案的最佳選擇 – 2009-12-19 17:49:33

+5

9個問​​題,26個答案,0%接受度? – 2009-12-19 17:52:45

+0

抱歉忘了接受我的其他問題的解決方案。現在把這個權利。謝謝psasik – Cragly 2009-12-19 18:45:27

回答

8

如何使用resource files

它們是鍵入的,可以在運行時從代碼輕鬆訪問,無需重新編譯即可輕鬆編輯,並且支持任何字符串內容(即不像枚舉,它只支持類似標識符的字符串)。

例如,您可以將名爲GlobalStrings.resx的資源文件添加到您的C#項目中,然後將名爲Relationship_Alternate的字符串添加到該文件中。你可以輸入你想要的字符串的任何值。在代碼中,你會訪問字符串值:

GlobalStrings.Relationship_Alternate 

由於在編譯時驗證這些都是標識符,可以保證您的所有字符串將在運行時加載成功。

希望它有幫助。

+0

我想將它保存在一個程序集中,因爲這將被多個項目使用。抱歉,應該在我的問題中指定了這一點。 – Cragly 2009-12-19 18:49:57

+0

您可以將資源編譯到您的程序集中。實際上,「嵌入式資源」是Visual Studio中的默認構建操作。您的字符串將被嵌入到您的EXE或DLL中。 – CesarGon 2009-12-19 19:14:05

1

如果要在編譯時設置它們,可以嘗試將它們放入appSettings(在web.config或app.config中)。這通常適用於連接字符串等。如果它們將在運行時設置,取決於其他值,您可以使用靜態類&靜態只讀字段

編輯:如果您希望它們是強類型的,你也可以使用設置文件。看到MSDN article

2

爲什麼不ü把它們枚舉它可以使內存使用效率,以及與不易出錯