Något som vet om man kan/hur man gör för att läsa nycklar från en ini-fil med hjälp av denna class? Den klassen är inte kapabel att läsa ini-filer, utan är avsed till att användas med .config filer, som är XML forma´terade filer. Om detta är för en ny applikation, och inte för ett projekt där du portar en befintlig mjukvara eller behöver legacy-stöd så rekommonderar jag dig att antingen använda .config filen (t.ex med custom sections) eller en egen XML file. Kan även påpeka att i Win32 API finns det en rad funktioner som heter GetPrivateProfile* (där * ersätts med kommandnamn) som du kan anropa med hjälp av P/Invoke (COM Interop). Någon som har ett exempel på hur man läser config filen? Det enklaste sättet att arbeta med config filer är att använda standard funktionaliteten hos .config systemet. Detta innebär att man lägga till sina inställningar inom <appSettings></appSettings> taggarna. Varje inställning lagras med en <add> tagg tillsammans med en key och ett värde. Ber om ursäkt för C# syntaxen, men jag använder mig inte av VB.NET (även om jag inte har några problem med det). Jag tror inte du skall ha några problem att förstå C# syntaxen för de extremt korta kodsnuttar som finns med i mitt svar. Bättre att få ett svar än inget svar alls =)System.Configuration.AppSettingsReader
Sv: System.Configuration.AppSettingsReader
Använder du en egen XML fil, så kan du använda dig av klasserna i System.Xml för att läsa innehållet (t.ex XPath är trevligt för detta i System.Xml.XPath). Vill du fortfarande använda ini-filer, så finns det en gratis klass [1] som heter IniReader som du kan ladda ner och använda.
[1] IniReader
http://www.mentalis.org/soft/class.qpx?id=6
---
Andreas Håkansson
Student of Software EngineeringSv: System.Configuration.AppSettingsReader
---
Andreas Håkansson
Student of Software EngineeringSv: System.Configuration.AppSettingsReader
Visst kan man använda sig av en egen XML-fil men jag är intresserad av att testa ramverkets egna tänkta funktion för detta!
Man är ju lite nyfiken...Sv: System.Configuration.AppSettingsReader
<code>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="ConnectionString" value="..din connectionstring..."/>
</appSettings>
</configuration>
</code>
För att sen läsa denna information behöver du använda dig av klasserna i System.Configuration. Allt som behövs finner du i klassen ConfigurationSettings och i detta fallet använder man sig av det statiska attributet AppSettings
<code>
string myConnectionString = ConfigurationSettings.AppSettings["ConnectionString"];
if( myConnectionString != null )
{
.. Öppna din connection
}
</code>
Du kan även skapa betydligt mer avancerade xml strukturer i .config filerna. Detta gör man genom att skapa en custom section. För att kunna utnyttja denna custom section måste man implementera gränssnittet IConfigurationSectionHandler i en klass, och tillsammans med deklarationen av den nya sektionen, ange vilken klass som skall användas för att läsa denna typ av sektion.
Man definerar en custom section på följande sätt i sin .config fil
<code>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="MySection"
type="MyNamespace.MyComponentSectionHandler, MyAssembly"/>
</configSections>
</configuration>
</code>
Vad man sen behöver göra är att skapa sin sektion.
<code>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="MySection"
type="MyNamespace.MySectionHandler, MyAssembly"/>
</configSections>
<MySection>
... Här i lägger du din XML struktur precis så som du vill lagra din information
se bara till att din klass som implementerar IConfigurationSectionHandler kan
hantera denna strukturern ...
</MySection>
</configuration>
</code>
För att sen från din kod kunna komma åt denna sektion, använder man sig ännu en gång av ConfigurationSettings klassen, fast denna gång utnyttjar man den statiska metoden GetConfig och anger namnet på sektionen man vill ladda. Eftersom GetConfig returnerar object, så måste man även typkonvertera till rätt IConfigurationSectionHandler klass.
<code>
MySectionHandler customHandler;
customHandler = (MySectionHandler)ConfigurationSettings.GetConfig("MySection");
if( customHandler != null )
{
... läs ut config data ...
}
</code>
Det finns exempel på nätet (en enkel sökning på IConfigurationSectionHandler på www.google.com ger en mängd resultat) på hur man implmenterar en custom klass som använder IConfigurationSectionHandler gränssnittet. Du kan även hitta mer information om detta på msdn.microsoft.com/library
<i>TIPS! För webprojekt skall alltid config filen heta Web.config, men för WinForm, Console Applications etc är det lite annorlunda. Lägg till en XML fil till ditt projekt och kalla den för App.config (OBS! Det skall verkligen stå App, så det skall INTE bytas ut mot applikationens namn, detta sker per automatik). När du sen kompilerar ditt projekt så kommer filen automatiskt att kopieras till din Bin katalog och döpas om till rätt namn (t.ex MittProgram.exe.config).</i>
Lycka till med .NET!
---
<b>Andreas Håkansson
Student of Software Engineering</b>Sv: System.Configuration.AppSettingsReader
---
<b>Andreas Håkansson
Student of Software Engineering</b>