Внедрение параметров XML


Я пытаюсь выяснить, как сделать это более динамично. Сейчас я спасу каждого поля формы индивидуально/вручную. Я бы с удовольствием, может быть, есть какой-то список мастер форма, что я мог бы перебрать. Я довольно новыми для C#, поэтому я пока не знаю много трюков. Пожалуйста, дайте мне знать, что вы думаете.

Вот моя упрощенная версия мой код:

Примечание: ни одно из имен переменных нумеруются в моей реальной код. Я их поменял в моем примере простоте. Поэтому я не могу перебрать имена форма итерацию.

//BINDED FORM COLLECTION 
public class FormLink
{
    private string _fObj1; 
    private string _fObj2; 
    private string _fObj3; 
    private string _fObj4; 
    private bool _fObj5; 
    private bool _fObj6; 
    private bool _fObj7; 

    public string fObj1
    {
        get
        {
            return this._fObj1;
        }
        set
        {
            this._fObj1 = value;
        }
    }

    public string fObj2 { /*...*/ }
    public string fObj3 { /*...*/ }
    public string fObj4 { /*...*/ }
    public bool fObj5 { /*...*/ }
    public bool fObj6 { /*...*/ }
    public bool fObj7 { /*...*/ }
}

//SETTINGS HANDLE
public class Settings
{
    private string SettingsFile = "settings.xml"; 
    FormLink form; 

    public Settings(FormLink form)
    {
        this.form = form; 
    }

    public void iStart()
    {
        if (!File.Exists(this.SettingsFile))
        {
            this.createDefaultsFile();
        }

        this.iLoad(); 
    }

    public void iEnd()
    {
        this.alterNodeValue(this.SettingsFile, "Settings", "fObj1", this.form.fObj1.ToString());
        this.alterNodeValue(this.SettingsFile, "Settings", "fObj2", this.form.fObj2.ToString());
        this.alterNodeValue(this.SettingsFile, "Settings", "fObj3", this.form.fObj3.ToString());
        this.alterNodeValue(this.SettingsFile, "Settings", "fObj4", this.form.fObj4.ToString());
        this.alterNodeValue(this.SettingsFile, "Settings", "fObj5", this.form.fObj5.ToString());
        this.alterNodeValue(this.SettingsFile, "Settings", "fObj6", this.form.fObj6.ToString());
        this.alterNodeValue(this.SettingsFile, "Settings", "fObj7", this.form.fObj7.ToString());
    }

    private void createDefaultsFile()
    {
        XDocument xml = new XDocument(
            new XElement("Settings",
                new XElement("fObj1", "string"),
                new XElement("fObj2", "string"),
                new XElement("fObj3", "string"),
                new XElement("fObj4", "string"),
                new XElement("fObj5", false),
                new XElement("fObj6", false),
                new XElement("fObj7", false),
            ));
        xml.Save(this.SettingsFile, SaveOptions.None);
    }

    private void iLoad()
    {
        var settings = this.getNodes(XDocument.Load(this.SettingsFile, "Settings");

        this.form.fObj1 = Help.getDictVal(settings, "fObj1");
        this.form.fObj1 = Help.getDictVal(settings, "fObj2");
        this.form.fObj1 = Help.getDictVal(settings, "fObj3");
        this.form.fObj1 = Help.getDictVal(settings, "fObj4");
        this.form.fObj1 = Help.getDictVal(settings, Help.stringToBool("fObj5"));
        this.form.fObj1 = Help.getDictVal(settings, Help.stringToBool("fObj6"));
        this.form.fObj1 = Help.getDictVal(settings, Help.stringToBool("fObj7"));
    }

    private void alterNodeValue(string xmlFile, string parent, string node, string newVal) 
    { 
        /* Alters a single XML Node and saves XML File */ 
    }

    private Dictionary<string, string> getNodes(XDocument xml, string parent) 
    { 
        /* Retrieves all Child Nodes of specified Parent and returns them in a Dictionary */ 
    }
}

//Basic Utilies class
public static class Help
{
    public static bool stringToBool(string BoolMe)
    {
        /* Safely converts String to Bool */
    }

    public static string getDictVal(Dictionary<string, string> dict, string key)
    {
        /* Safely gets value from Dictionay based on Key*/
    }
}


1083
7
задан 11 апреля 2011 в 01:04 Источник Поделиться
Комментарии
2 ответа

вы можете просто использовать XML-сериализатор?

var s = new XmlSerializer(typeof(FormLink));
TextWriter w = new StreamWriter("settings.xml");
s.Serialize(w, form);
w.Close();

7
ответ дан 11 апреля 2011 в 04:04 Источник Поделиться

Похоже, что вы пытаетесь сделать здесь можно с помощью .Объем встроенной поддержки для настройки приложения. Проверить эту ссылку для получения дополнительной информации об использовании его. По сути, вы можете задать ваши параметры в приложении.конфигурационный XML-файл в стандартном формате, а затем извлекать их с помощью встроенного в менеджере конфигурации класса.

4
ответ дан 11 апреля 2011 в 03:04 Источник Поделиться