2 votes

C# app.config avec des valeurs multiples avec une valeur délimitée

J'ai mon app.config avec un ArrayOfString entrée. Chaque entrée contient une chaîne de caractères délimitée par des points-virgules. Je veux pouvoir utiliser lambda, si possible, pour analyser les valeurs d'un fichier de type List<> sur la base de critères d'entrée. Mais je veux que la première entrée qu'il trouve soit basée sur ce critère. Ou existe-t-il un meilleur moyen UTILISER el app.config fichier ?

Par exemple,

Si je voulais trouver la première entrée qui contient l'élément [source],[filetype] et retourner simplement le chemin du fichier.

Exemple app.config entrée.

SOURCE;FLAC;112;2;\\sourcepath\music\

DEST;FLAC;112;2;\\destpath\music\

1voto

Mike Guthrie Points 2620

Plutôt que de compter sur le fait que vos valeurs tombent à l'index correct d'une opération de division de chaîne, vous devriez créer votre propre ConfigurationSection définition.

Voir le Comment faire sur MSDN et le Exemple de ConfigurationProperty de MSDN .

Voici un code pour vous aider à démarrer :

class CustomConfig : ConfigurationSection
{
    private readonly CustomElementCollection entries =
        new CustomElementCollection();

    [ConfigurationProperty("customEntries", IsDefaultCollection = true)]
    [ConfigurationCollection(typeof(CustomElementCollection), AddItemName = "add")]
    public CustomElementCollection CustomEntries { get { return entries; } }
}

class CustomElementCollection : ConfigurationElementCollection
{
    public CustomElement this[int index]
    {
        get { return (CustomElement) BaseGet(index); }
        set
        {
            if (BaseGet(index) != null)
            {
                BaseRemoveAt(index);
            }
            BaseAdd(index, value);
        }
    }

    protected override ConfigurationElement CreateNewElement()
    {
        return new CustomElement();
    }

    protected override object GetElementKey(ConfigurationElement element)
    {
        return ((CustomElement)element).Name;
    }
}

class CustomElement : ConfigurationElement
{
    [ConfigurationProperty("name", IsRequired = true)]
    public string Name
    {
        get { return this["name"] as string; }
        set { this["name"] = value; }
    }

    [ConfigurationProperty("direction", IsRequired = true)]
    public string Direction
    {
        get { return this["direction"] as string; }
        set { this["direction"] = value; }
    }

    [ConfigurationProperty("filePath", IsRequired = true)]
    public string FilePath
    {
        get { return this["filePath"] as string; }
        set { this["filePath"] = value; }
    }
}

Une fois que vous avez spécifié votre configuration personnalisée, vous pouvez Select avec une lambda utilisant n'importe quelle propriété spécifiée dans votre fichier personnalisé ConfigurationElement .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X