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:
Start Visual Studio .NET of Visual Studio.
Wijs in het menu Bestand naar Nieuw en selecteer vervolgens Project.
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.
Zorg ervoor dat het Solution Explorer-venster zichtbaar is. Als deze niet zichtbaar is, drukt u op Ctrl+Alt+L.
Klik in Solution Explorer met de rechtermuisknop op de projectnaam, selecteer Toevoegen en selecteer vervolgens Nieuw item.
Selecteer XML-bestand in de lijst Nieuw item toevoegen.
Typ App.config in het tekstvak Naam en selecteer vervolgens Toevoegen.
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>
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;
Voeg een verwijzing naar System.Configuration.dll toe door de volgende stappen uit te voeren:
- Selecteer Verwijzing toevoegen in het menu Project.
- Selecteer in het dialoogvenster Verwijzing toevoegen het tabblad .NET .
- Zoek en selecteer de onderdeelnaam van
System.Configuration
. - Selecteer OK.
Als u de waarde van een configuratiebestandssleutel in de
<appSettings>
sectie van het configuratiebestand wilt opslaan, declareert u als volgt een tekenreeksvariabele in deMain
sectie:string sAttr;
Als u een waarde voor een opgegeven sleutel wilt ophalen uit de
<appSettings>
sectie van het configuratiebestand, gebruikt u deGet
methode van deAppSettings
eigenschap van de ConfigurationManager-klasse . DeConfigurationManager
klasse bevindt zich in deSystem.Configuration
naamruimte. Wanneer deAppSettings.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 desAttr
tekenreeksvariabele. Als er geen sleutel bestaat voor deze waarde, wordt er niets opgeslagen insAttr
.sAttr = ConfigurationManager.AppSettings.Get("Key0");
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);
U kunt één verwijzing naar de
AppSettings
eigenschap gebruiken om alle sleutel-/waardeparen in de<appSettings>
sectie op te halen. Wanneer u deAppSettings
eigenschap gebruikt, retourneert de toepassing alle gekoppelde sleutel-/waardeparen. Deze paren worden opgeslagen in eenNameValueCollection
type. DeNameValueCollection
bevat sleutel/waarde-vermeldingen voor elke sleutel die door de toepassing wordt opgehaald. DeNameValueCollection
klasse bevindt zich in deSystem.Collections.Specialized
naamruimte.NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
De
AllKeys
eigenschap vanNameValueCollection
verwijst naar een tekenreeksmatrix die een vermelding bevat voor elke sleutel die door de toepassing wordt opgehaald. Gebruik een foreach-constructie om deAllKeys
matrix te doorlopen om toegang te krijgen tot elke sleutel die door de toepassing wordt opgehaald. Elke sleutelvermeldingAllKeys
is een gegevenstype tekenreeks.Gebruik binnen de
foreach
constructieConsole.WriteLine
om de sleutel en de bijbehorende waarde weer te geven in het consolevenster. De huidige sleutel waarin de toepassingsprocessen zich bevindts
. Gebruik deze als index in desAllNameValueCollection
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.