2010-09-16 30 views
2

目前,在我的C#cs文件,我已經聲明瞭一個字典作爲這樣的:創建從值的app.config地圖

Dictionary<string, string> example_map = new Dictionary<string, string>();
option_symbol_map.Add("Key11", "Val1");
option_symbol_map.Add("Key2", "Val2");
option_symbol_map.Add("Key3", "Val3");

我需要這些密鑰和相應的值移動到應用程序。配置文件,以便可以根據需要進行編輯。

最好的實施方式是什麼?

我應該做這樣的:

<add key="Test1" value="Key1,Key2,Key3"/>
<add key="Test2" value="Val1,Val2,Val3"/>

,然後同時讀兩個鍵同時創造我的字典?

或者我應該列出這樣說:

<add key="test3" value="Key1,Val1,Key2,Val2,Key3,Val3"/>

在這種情況下,我將如何創建我的地圖,選擇每隔對象作爲鍵和值?

回答

4

相反的AppSettings,你可以寫自己的ConfigurationElementCollection類,讀這樣的:

<yourSection> 
    <yourElements> 
     <add key="Key1" value="Val1"/> 
     <add key="Key2" value="Val2"/> 
     <add key="Key3" value="Val3"/> 
    </yourElements>  
</yourSection> 

這裏是一個article覆蓋最重要的部分。如果你這樣做,那麼你不需要知道鑰匙。

1

什麼是TestX?爲什麼不僅僅使用

<add key="Key1" value="Val1"/> 
<add key="Key2" value="Val2"/> 
<add key="Key3" value="Val3"/> 

它完全符合'鍵/值'的定義。然後,他們可以是這樣的訪問:

string val1 = ConfigurationManager.AppSettings["Key1"]; 
+0

TestX只是我給了app.config中的鍵的一個任意名稱。 – xbonez 2010-09-16 16:47:52

+0

我看到了您的解決方案,但將字典的每個鍵值對都作爲關鍵字是明智之舉。如果字典變得相當大,那麼不會不必要地使app.config文件膨脹? – xbonez 2010-09-16 16:48:44

+0

您沒有指定要存儲的值。如果你必須將它們存儲在app.config中,我會去解析巨大的value1,value2,value3字符串;數據將無論如何,只是更可讀...... IMO – Alex 2010-09-16 16:50:59