我希望能夠輕鬆地將單個用戶設置重置爲默認值。 我編寫了一個擴展,像這樣:在Visual Studio .NET中獲取用戶設置集合類型的默認值
public static void sReset(this Properties.Settings set, string key = "")
{
if (key == "")
{
set.Reset();
return;
}
Console.WriteLine("Reset '" + key + "' to: " + set.Properties[key].DefaultValue);
set.PropertyValues[key].PropertyValue = set.PropertyValues[key].Property.DefaultValue;
}
這工作得很好原始類型。 但現在我想的是適用於stringCollection,它失敗:
類型的未處理的異常則「」發生在 MYAPP.EXE
其他信息:無法強制轉換的對象鍵入'System.String' 鍵入'System.Collections.Specialized.StringCollection'。
這是因爲這些集合類型的默認值(存儲序列化爲XML)是返回字符串: set.Properties[key].DefaultValue.GetType()
回報System.String
我可以在設置設計師通常,它只是蒙上價值StringCollection看:
public global::System.Collections.Specialized.StringCollection settingsName {
get {
return ((global::System.Collections.Specialized.StringCollection)(this["settingsName"]));
}
set {
this["settingsName"] = value;
}
}
但分配默認值,根據上述錯誤消息後失敗。
我嘗試在分配前投射XML字符串,但當然那裏也失敗了。
這樣的XML字符串在被分配到settings屬性之前如何轉換? 我需要做些什麼來完成這項工作?