Konfigurationsfiler
Kommunikation med konfigurationsfiler sker på forskellig vis afhængig af runtime, og det kan ske både typevagt og typestærkt.
Typesvag binding til en .NET Core konfigurationsfil
Den typesvage binding til en json-fil i .NET Core kræver NuGet pakken
Med udgangspunkt i følgende json-fil kaldet appsettings.json (husk - “Copy to Output Directory” = “Copy always”)
kan følgende kode bruges:
// Kræver NuGet: Microsoft.Extensions.Configuration.Json
// samt evt Microsoft.Extensions.Configuration.Binder (.NET 6+)
using Microsoft.Extensions.Configuration;
using System;
using System.IO;
namespace Configuration.Core
{
class Program
{
static void Main(string[] args)
{
var c1 = ConfigSetupWeak();
Console.WriteLine(c1["ApplicationName"]);
Console.WriteLine(c1.GetSection("SectionA")["ModuleName"]);
}
static IConfigurationRoot ConfigSetupWeak() {
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
IConfigurationRoot configuration = builder.Build();
return configuration;
}
}
}
Typestærk binding til en .NET Core konfigurationsfil
Den typestærke binding kræver klasser der mapper konfigurationsfilen (typisk json), samt følgende pakker:
Med udgangspunkt i følgende json-fil kaldet appsettings.json (husk - “Copy to Output Directory” = “Copy always”)
kan følgende kode bruges:
using System;
using System.IO;
using Microsoft.Extensions.Configuration;
namespace ConsoleOpgave_Configuration
{
class Program
{
static void Main(string[] args)
{
var configuration = GetConfiguration();
Console.WriteLine(configuration.A);
Console.WriteLine(configuration.B);
Console.WriteLine(configuration.C);
}
static Configuration GetConfiguration() {
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
IConfigurationRoot configuration = builder.Build();
var c = new Configuration();
configuration.Bind(c);
return c;
}
}
class Configuration {
public string A { get; set; }
public int B { get; set; }
public bool C { get; set; }
}
}
.NET Framework
Det nemmeste i .NET Framework er at benytte app.config og tilføje følgende:
til configuration-noden.
Herefter kan noderne aflæses med
string v1 = System.Configuration.ConfigurationManager.AppSettings["MyValue1"];
string v2 = System.Configuration.ConfigurationManager.AppSettings["MyValue2"];
Men det kræver, at projektet har en reference (ikke NuGet) til