Si no es necesario utilizar el diseñador de la configuración o editar la configuración con un editor de texto, puede crear una clase simple que deriva de ApplicationSettingsBase:
namespace MyNamespace
{
using System.Collections.Generic;
using System.Configuration;
/// <summary>
/// Persistent store for my parameters.
/// </summary>
public class MySettings : ApplicationSettingsBase
{
/// <summary>
/// The instance lock.
/// </summary>
private static readonly object InstanceLock = new object();
/// <summary>
/// The instance.
/// </summary>
private static MySettings instance;
/// <summary>
/// Prevents a default instance of the <see cref="MySettings"/> class
/// from being created.
/// </summary>
private MySettings()
{
// don't need to do anything
}
/// <summary>
/// Gets the singleton.
/// </summary>
public static MySettings Instance
{
get
{
lock (InstanceLock)
{
if (instance == null)
{
instance = new MySettings();
}
}
return instance;
}
}
/// <summary>
/// Gets or sets the parameters.
/// </summary>
[UserScopedSetting]
[SettingsSerializeAs(SettingsSerializeAs.Binary)]
public Dictionary<string, string> Parameters
{
get
{
return (Dictionary<string, string>)this["Parameters"];
}
set
{
this["Parameters"] = value;
}
}
}
}
el verdadero truco es el [SettingsSerializeAs (SettingsSerializeAs.Binary)] attribute. La mayoría de las clases (¿todas?) Pueden ser serializadas de esta manera donde ConfiguracionesSerializar.String o ConfiguracionesSerializarAs.Xml no funcionará para un Diccionario.
utilizar esto en su código a medida que la configuración normal sería:
// this code untested...
MySettings.Instance.Parameters["foo"] = "bar";
MySettings.Instance.Parameters.Save();
MySettings.Instance.Parameters.Reload();
string bar;
if (!MySettings.Instance.Parameters.TryGetValue("foo", out bar))
{
throw new Exception("Foobar");
}
Si desea que el diccionario para serializar en algo editable por el usuario, se debe proceder de diccionario y jugar con TypeConverter (ver Using Custom Classes with Application Settings).
Relacionado: http://stackoverflow.com/questions/2890271/how-to-save-a-liststring-on-settings-default – BrunoLM