Как использовать доступные для чтения / записи локальные настройки XML?

Я нашел что-то похожее на то, что мне нужно, здесь: http://www.codeproject.com/KB/cs/PropertiesSettings.aspx Но это не совсем так для меня. Пользовательские настройки хранятся в каком-то отдаленном месте, например C:\documents and settings\[username]\local settings\application data\[your application], но у меня нет доступа к этим папкам, и я не могу скопировать файл настроек с одного компьютера на другой или удалить файл в целом. Кроме того, было бы очень удобно иметь XML-файл настроек прямо рядом с приложением и копировать / отправлять оба. Это используется для демонстрационного программного обеспечения (которое является законным типом задачи кодирования) и будет использоваться нетехническими людьми на местах. Мне нужно сделать это быстро, поэтому мне нужно повторно использовать существующую библиотеку, а не писать свою собственную. Мне нужно, чтобы он был легким в использовании и переносимым. Последнее, что я хочу, - это позвонить в полночь, чтобы сказать, что настройки не сохраняются при редактировании через диалог настроек, который я построю.

Итак, пользовательские настройки хранятся, бог знает где, а настройки приложения доступны только для чтения (не ходи). Есть ли что-нибудь еще, что я могу сделать? Я думаю, что файл app.config имеет несколько целей, и я думаю, что однажды увидел, что он используется так, как я хочу, я просто не могу найти ссылку.

Дайте мне знать, если что-то не понятно.

1 ответ

Решение

Вы можете создать класс, содержащий ваши настройки, и затем сериализовать его в XML:

public class Settings
{
    public string Setting1 { get; set; }
    public int Setting2 { get; set; }
}

static void SaveSettings(Settings settings)
{
    var serializer = new XmlSerializer(typeof(Settings));
    using (var stream = File.OpenWrite(SettingsFilePath))
    {
        serializer.Serialize(stream, settings);
    }
}

static Settings LoadSettings()
{
    if (!File.Exists(SettingsFilePath))
        return new Settings();

    var serializer = new XmlSerializer(typeof(Settings));
    using (var stream = File.OpenRead(SettingsFilePath))
    {
        return (Settings)serializer.Deserialize(stream);
    }
}
Другие вопросы по тегам