Delen via


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

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

Notitie

De code in dit artikel is gericht op .NET Framework 2.0 en latere versies. Als u wilt weten op welke specifieke versies de ConfigurationManager klasse van toepassing is, raadpleegt u de sectie Van toepassing op .

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

Behoeften

De volgende lijst bevat 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 .NET Framework bevatten de benodigde klassen om informatie op te halen uit een .NET-toepassingsconfiguratiebestand tijdens runtime.

Als u een consoletoepassing wilt maken waarmee de inhoud van een gekoppeld configuratiebestand tijdens de runtime wordt gelezen, voert u de volgende stappen uit:

  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. Visual C# maakt standaard een klasse met de naam Program.

    Notitie

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

  4. Zorg ervoor dat het Solution Explorer-venster zichtbaar is. Als deze niet zichtbaar is, drukt u op 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.config in het tekstvak Naam en selecteer vervolgens Toevoegen.

  8. U kunt een toepassingsconfiguratiebestand gebruiken om aangepaste toepassingsinstellingen te verzamelen die u opslaat in de indeling sleutel/waarde. 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> en </configuration> tags.

    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.

    Notitie

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

    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 Verwijzing toevoegen in het menu Project.
    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 opslaan, declareert u als volgt een tekenreeksvariabele in de Main sectie:

    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 aan de sleutel is gekoppeld.

    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 bestaat voor deze waarde, wordt er niets opgeslagen in sAttr.

    sAttr = ConfigurationManager.AppSettings.Get("Key0");
    
  13. Als u de waarde wilt weergeven die de toepassing ophaalt in het consolevenster, gebruikt Console.WriteLine u als volgt:

    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/waarde-vermeldingen voor elke sleutel die door de toepassing wordt opgehaald. 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 die een vermelding bevat voor elke sleutel die door de toepassing wordt opgehaald. Gebruik een foreach-constructie om de AllKeys matrix te doorlopen om toegang te krijgen tot elke sleutel die door de toepassing wordt opgehaald. Elke sleutelvermelding AllKeys is een gegevenstype tekenreeks.

    Gebruik binnen de foreach constructie Console.WriteLine om de sleutel en de bijbehorende waarde weer te geven in het consolevenster. De huidige sleutel waarin de toepassingsprocessen zich bevindt s. Gebruik deze als index in de sAllNameValueCollection index om de bijbehorende waarde te verkrijgen.

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

Volledige codevermelding

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();
        }
    }
}

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 deze werkt

Druk op F5 om de code uit te voeren. In het consolevenster moeten de sleutel-waardeparen uit de <appSettings> sectie van het gekoppelde configuratiebestand als volgt worden 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 onjuist 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), wordt er een foutbericht weergegeven.

  • 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