単一のユーザー設定をデフォルト値に簡単にリセットする機能が必要です。 私はそうのような拡張子を書いた: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にそれを適用したい、それが失敗します。
型「System.InvalidCastExceptionの」の未処理の例外がMYAPP.EXEで
発生しました追加情報:のオブジェクトをキャストすることができません'System.Collections.Specialized.StringCollection'と入力すると、 'System.String' と入力します。
set.Properties[key].DefaultValue.GetType()
戻りSystem.String
が、私は通常、それだけでStringCollectionに値をキャスト設定デザイナで見ることができます(XMLとしてシリアライズ格納)これらのコレクション型のデフォルト値が文字列として返されるためです
:
public global::System.Collections.Specialized.StringCollection settingsName {
get {
return ((global::System.Collections.Specialized.StringCollection)(this["settingsName"]));
}
set {
this["settingsName"] = value;
}
}
ただし、上記のエラーメッセージでDefaultValueを割り当てた後に失敗します。
私は割り当ての前にXML文字列をキャストしようとしましたが、もちろん失敗しました。
このようなXML文字列は、設定プロパティに割り当てる前にどのように変換されていますか? これを行うには何が必要ですか?