我想知道這3 Settings.Default.<PropertyName>
,Settings.Default.Properties
和Settings.Default.PropertyValues
之間的區別。
我有一個WPF窗口,將動態生成基於這些Settings
控制,然後一個可以更新Settings
值 我第一次使用Settings.Default.Properties
收藏,但我相信這不會更新任何配置或物理設置文件中的值用戶文件夾。 所以我用反射更新,但我仍然無法計算如何通過Reflection獲得 值。 (可能仍然需要在這項研究)Settings.Default。[PropertyName],Settings.Default.Properties和Settings.Default.PropertyValues之間的區別是什麼?
Settings.Default.GetType().GetProperty(propertyName,
typeof(string)).SetValue(source, fileDialog.FileName, null);
Settings.Default.Save();
Settings.Default.Reload();
然後,我看到Settings.Default.PropertyValues
有最近更新的數值,並在調試模式下測試的,
string properyValue =
Convert.ToString(Settings.Default.PropertyValues[propertyName].PropertyValue);
奇怪的是,他們似乎並沒有工作,當我創建了安裝程序和exe。仍然要弄清楚什麼是錯的。 如果我使事情複雜化並錯過某些東西,有人能指出我嗎?
更新1
nflash的評論後,我檢查創建的文件時。該文件並沒有創建時,應用程序啓動所有3,我甚至打電話Settings.Default.Save
在開始的權利,但它不創建文件Settings.Default.<PropertyName>
,Settings.Default.Properties
被實例化,但不是Settings.Default.PropertyValues
。
只有在「設置」和「保存」中進行更改後,纔會創建文件。
UPDATE2
現在,我想出瞭解決的辦法是
source.GetType().GetProperty(setting.Name, typeof(string))
.SetValue(source, "NewValue", null);
正如nflash提到的那樣,這將是類型安全的(雖然思考有它的demirits)。但Settings.Default.<PropertyName>
因此被正確同步和實例化。
這是在用戶範圍內,並會更新一些發現,我觀察。 –
已更新帖子。 –
如果有人可以捕獲更多的信息,我會保留這個問題一段時間,另外提到'Properties'和'PropertyValues'都在ApplicationSettingsBase中實現,SettingsBase是抽象類。 –