我目前工作的一個VSTO項目,我有5個.settings
文件:迭代通過設置文件
Settings.settings
(默認)s201213.settings
s201314.settings
s201415.settings
s201516.settings
隨着時間的推移,將會有更多的設置文件包括在相同的命名約定('s'後面是納稅年度)之後。
我知道我可以遍歷一個設置文件,但有沒有一種方法來遍歷實際的設置文件本身?
我試過的東西,如:
public void Example()
{
System.Collections.IEnumerator testSetting = MyAddIn.Properties.s201213.Default.Properties.GetEnumerator();
while (testSetting.MoveNext())
{
System.Diagnostics.Debug.WriteLine("Setting:\t" + testSetting.Current.ToString());
}
}
這顯然只有通過一個單一的設置文件迭代,但我似乎無法弄清楚通過所有的設置文件作爲一個集合迭代的邏輯,而沒有明確地命名代碼中的每一個。我希望這是有道理的,任何幫助表示讚賞。
更新:
我覺得我用下面的代碼取得了一些進展:
foreach(Type test in Assembly.GetExecutingAssembly().GetTypes())
{
if (System.Text.RegularExpressions.Regex.IsMatch(test.Name, "^s[0-9]{6}$"))
{
PropertyInfo value = test.GetProperty("LEL");
try
{
System.Diagnostics.Debug.WriteLine("Name:\t" + test.Name +
"\nNameSpace:\t" + test.Namespace +
"\nProperty:\t" + test.GetProperty("LEL").ToString() +
"\n");
}
catch(Exception e)
{
System.Diagnostics.Debug.WriteLine(e.Message);
}
}
}
這似乎是認識的設置文件和存儲的值:
輸出:
Name: s201213
NameSpace: MyAddIn.Properties
Property: Double LEL
Name: s201314
NameSpace: MyAddIn.Properties
Property: Double LEL
Name: s201415
NameSpace: MyAddIn.Properties
Property: Double LEL
Name: s201516
NameSpace: MyAddIn.Properties
Property: Double LEL
但是,我似乎無法得到「LEL」設置的實際值,應該返回Double
?
月2日更新
其實我已經放棄了,決定使用本地數據庫,而不是 - 但我還是想知道,如果這是可能的,而且我認爲其他人會喜歡我也知道,所以我會拋出賞金來嘗試併產生一些興趣。
謝謝,我會盡快回到我自己的個人電腦上試試這個 - 所以如果我明白了,這是解析XML配置文件的值而不是?從來沒有想過...... _(tag edi )_ –
請原諒我的無知,因爲我仍然在學習C#和VS的基礎知識 - 'GetSettingFilesValues.exe.config'不存在於'XLSTART'或'Assembly.GetExecutingAssembly.BaseDirectory '所以我現在硬編碼了我的'app.config'文件的路徑。它是否正確?我在'section.Settings.Get(「LEL」)''上聲明「未將對象引用設置爲對象實例」時出現異常。 –
是的,這對於VSTO是正確的,AddIns配置文件是你想要的。在我的例子中,我使用了一個winform應用程序。對於Web開發人員,他們會使用他們的web.config的路徑。 –