Visual C# gebruiken om aangepaste gegevens op te slaan en op te halen uit een toepassingsconfiguratiebestand

In dit artikel wordt uitgelegd hoe u aangepaste informatie opslaat uit een configuratiebestand dat u later tijdens de uitvoering kunt ophalen door de bijbehorende toepassing. Dit is handig wanneer u gegevens moet definiëren die zijn gekoppeld aan een toepassing.

Oorspronkelijke productversie: Visual C#
Origineel KB-nummer: 815786

Vereisten

In de volgende lijst vindt u een overzicht van de aanbevolen hardware en software die u nodig hebt:

  • Microsoft Windows
  • Visual C#

In dit artikel wordt ervan uitgegaan dat u bekend bent met de volgende onderwerpen:

  • Extensible Markup Language (XML)
  • .NET-configuratiebestanden

Een consoletoepassing maken die een configuratiebestand leest

U kunt toepassingsinstellingen opslaan in het configuratiebestand dat is gekoppeld aan de toepassing. Configuratiebestanden worden opgeslagen in XML-indeling.

De System.Configuration en de System.Collections.Specialized naamruimten in de .NET Framework bevatten de benodigde klassen om gegevens op te halen uit een .NET-toepassingsconfiguratiebestand tijdens runtime.

Voer de volgende stappen uit om een consoletoepassing te maken die de inhoud van een gekoppeld configuratiebestand leest tijdens runtime:

  1. Start Visual Studio .NET of Visual Studio.

  2. Wijs in het menu Bestand naar Nieuw en selecteer vervolgens Project.

  3. selecteer Visual C# onder Projecttypen en selecteer vervolgens Consoletoepassing onder Sjablonen. Geef het project de naam ConConfig. Standaard maakt Visual C# een klasse met de naam Program.

    Opmerking

    Selecteer in Visual Studio .NET Visual C#-projecten onder Projecttypen en selecteer vervolgens Consoletoepassing onder Sjablonen. Geef het project de naam ConConfig. Standaard maakt Visual C# een klasse met de naam Class1.

  4. Zorg ervoor dat het Solution Explorer venster zichtbaar is. Als deze niet zichtbaar is, drukt u op de toetsencombinatie Ctrl+Alt+L.

  5. Klik in Solution Explorer met de rechtermuisknop op de projectnaam, selecteer Toevoegen en selecteer vervolgens Nieuw item.

  6. Selecteer XML-bestand in de lijst Nieuw item toevoegen.

  7. Typ App.configin het tekstvak Naam en selecteer vervolgens Toevoegen.

  8. U kunt een toepassingsconfiguratiebestand gebruiken om aangepaste toepassingsinstellingen te verzamelen die u opslaat in sleutel-/waarde-indeling. U kunt elementen opnemen <add> in de <appSettings> sectie van een gekoppeld configuratiebestand. Elk sleutel-waardepaar heeft één <add> element. Een <add> element heeft de volgende indeling:

    <add key="Key0" value="0" />
    

    Voeg een <appSettings> sectie met <add> elementen toe aan het configuratiebestand tussen de <configuration> tags en </configuration> .

    Het volgende configuratiebestand bevat bijvoorbeeld een <appSettings> sectie waarin drie sleutel-waardeparen worden opgegeven:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <appSettings>
            <add key="Key0" value="0" />
            <add key="Key1" value="1" />
            <add key="Key2" value="2" />
        </appSettings>
    </configuration>
    
  9. Dubbelklik in Solution Explorer op Program.cs om het codevenster weer te geven. Voeg de volgende instructies toe aan uw codemodule.

    Opmerking

    Deze instructies moeten vóór andere instructies in het bestand worden weergegeven.

    using System.Configuration;
    using System.Collections.Specialized;
    
  10. Voeg een verwijzing naar System.Configuration.dll toe door de volgende stappen uit te voeren:

    1. Selecteer in het menu Projectde optie Verwijzing toevoegen.
    2. Selecteer in het dialoogvenster Verwijzing toevoegen het tabblad .NET .
    3. Zoek en selecteer de onderdeelnaam van System.Configuration.
    4. Selecteer OK.
  11. Als u de waarde van een configuratiebestandssleutel in de <appSettings> sectie van het configuratiebestand wilt bewaren, declareert u een tekenreeksvariabele in de Main sectie als volgt:

    string sAttr;
    
  12. Als u een waarde voor een opgegeven sleutel wilt ophalen uit de <appSettings> sectie van het configuratiebestand, gebruikt u de Get methode van de AppSettings eigenschap van de ConfigurationManager klasse. De ConfigurationManager klasse bevindt zich in de System.Configuration naamruimte. Wanneer de AppSettings.Get methode een tekenreeksinvoerparameter ontvangt die een sleutel bevat, haalt de toepassing de waarde op die is gekoppeld aan de sleutel.

    Met de volgende code wordt de waarde voor het Key0 kenmerk opgehaald uit het bijbehorende configuratiebestand. De code plaatst deze waarde vervolgens in de sAttr tekenreeksvariabele. Als er geen sleutel voor deze waarde bestaat, wordt er niets opgeslagen in sAttr.

    sAttr = ConfigurationManager.AppSettings.Get("Key0");
    
  13. Gebruik Console.WriteLine als volgt om de waarde weer te geven die de toepassing ophaalt in het consolevenster:

    Console.WriteLine("The value of Key0 is "+sAttr);
    
  14. U kunt één verwijzing naar de AppSettings eigenschap gebruiken om alle sleutel-waardeparen in de <appSettings> sectie op te halen. Wanneer u de AppSettings eigenschap gebruikt, retourneert de toepassing alle gekoppelde sleutel-waardeparen. Deze paren worden opgeslagen in een NameValueCollection type. De NameValueCollection bevat sleutel-/waardevermeldingen voor elke sleutel die de toepassing ophaalt. De NameValueCollection klasse bevindt zich in de System.Collections.Specialized naamruimte.

    NameValueCollection sAll ;
    sAll = ConfigurationManager.AppSettings;
    
  15. De AllKeys eigenschap van NameValueCollection verwijst naar een tekenreeksmatrix met een vermelding voor elke sleutel die de toepassing ophaalt. Gebruik een foreach-constructie om de AllKeys matrix te doorlopen voor toegang tot elke sleutel die de toepassing ophaalt. Elke sleutelvermelding in AllKeys is een gegevenstype tekenreeks.

    Gebruik in de foreach constructie Console.WriteLine om de sleutel en de bijbehorende waarde weer te geven in het consolevenster. De huidige sleutel die de toepassing verwerkt, bevindt zich in s. Gebruik deze als een index in de om de sAllNameValueCollection bijbehorende waarde op te halen.

     foreach (string s in sAll.AllKeys)
         Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s));
    
     Console.ReadLine();
    

Codelijst voltooien

using System;
using System.Configuration;
using System.Collections.Specialized;

namespace ConConfig
{
    class Program
    {
        static void Main(string[] args)
        {
            string sAttr;

            // Read a particular key from the config file 
            sAttr = ConfigurationManager.AppSettings.Get("Key0");
            Console.WriteLine("The value of Key0: " + sAttr);

            // Read all the keys from the config file
            NameValueCollection sAll;
            sAll = ConfigurationManager.AppSettings;

            foreach (string s in sAll.AllKeys)
                Console.WriteLine("Key: " + s + " Value: " + sAll.Get(s));

            Console.ReadLine();
        }
    }
}

Opmerking

Deze code is gericht op de .NET Framework 2.0. Als u de .NET Framework 1.0 of de .NET Framework 1.1 gebruikt, wijzigt u alle exemplaren van de ConfigurationManager klasse in ConfigurationSettings.

Volledige lijst met configuratiebestanden (ConConfig.exe.config)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="Key0" value="0" />
        <add key="Key1" value="1" />
        <add key="Key2" value="2" />
    </appSettings>
</configuration>

Controleren of het werkt

Druk op F5 om de code uit te voeren. In het consolevenster worden de sleutel-waardeparen uit de <appSettings> sectie van het bijbehorende configuratiebestand als volgt weergegeven:

The value of Key0: 0
Key: Key0 Value:0
Key: Key1 Value:1
Key: Key2 Value:2

Problemen oplossen

  • Het configuratiebestand wordt opgeslagen in XML-indeling. Zorg ervoor dat u alle XML-syntaxisregels volgt. Houd er rekening mee dat XML hoofdlettergevoelig is. Als de XML niet goed is opgemaakt of als een element verkeerd is gespeld, ontvangt u een System.Configuration.Configuration uitzondering.

    Als u bijvoorbeeld het sleutelkenmerk van een <add> element toevoegt met een hoofdletter K in plaats van een kleine letter k, of als de <appSettings> sectie wordt weergegeven als <AppSettings> (met een hoofdletter A in plaats van een kleine letter a), ontvangt u een foutbericht.

  • Het configuratiebestand moet worden opgeslagen in dezelfde map als de bijbehorende toepassing.

  • U moet de volgende syntaxis gebruiken voor de naam van het configuratiebestand:
    <ApplicationName>.<ApplicationType>.config

    Waarbij <ApplicationName> de naam van de toepassing is. <ApplicationType> is het type toepassing, zoals .exe. En .config is het vereiste achtervoegsel.

Verwijzingen