Erweiterung für den ApplicationSettings Wrapper - eigene Config-Files verarbeiten

Written on July 08, 2004

In der ASP.NET-Mailingliste kam die Frage auf, wie man mehrere .config-Files, wie es z.B. dasBlog tut, verwenden kann. Die Lösung liefert Daniel Fisher's custom configuration file AppSettings reader Klasse.

Die Klasse lässt sich problemlos mit dem von mir vorgestellten ApplicationSettings Wrapper verwenden - ein Beispiel für die Verwendung mit zwei .config-Files (web.config und DataAccess.config) könnte z.B. so aussehen:

using System;
using System.Configuration;
using System.Web;
using System.Web.UI;
using StaticDust.Configuration;

namespace MyApplication.Configuration
{
///
/// Zusammenfassung für Configuration.
///

internal class Web
{
public static string BaseURL
{
get
{
return LoadConfigValue("BaseURL");
}
}

///
/// Liefert den angefordeten Keyvalue aus der
/// web.config zurück und cached diesen, falls
/// noch nicht gecached.
///

/// Der angefordete Keyname
/// in der web.config
/// Der Keyvalue aus der web.config.
private static string LoadConfigValue(string nameInWebConfig)
{
string nameInApplication = "ConfigWeb" + nameInWebConfig;
HttpApplicationState app = HttpContext.Current.Application;
if( app[nameInApplication] == null )
{
app[nameInApplication] =
ConfigurationSettings.AppSettings[nameInWebConfig];
}
return
app[nameInApplication].ToString();
}
}

internal class DataAccess
{
///
/// Liefert den in der web.config gespeicherten
/// Connectionstring zurück.
///

public static string ConnectionString
{
get
{
return LoadConfigValue("ConnectionString");
}
}

///
/// Liefert den angefordeten Keyvalue aus der
/// web.config zurück und cached diesen, falls
/// noch nicht gecached.
///

/// Der angefordete Keyname
/// in der web.config
/// Der Keyvalue aus der web.config.
private static string LoadConfigValue(string nameInWebConfig)
{
string nameInApplication = "ConfigDataAccess" + nameInWebConfig;
HttpApplicationState app = HttpContext.Current.Application;
if( app[nameInApplication] == null )
{
app[nameInApplication] =
CustomConfigurationSettings.AppSettings(
HttpContext.Current.Server.MapPath("DataAccess.config"))[nameInWebConfig];

}
return
app[nameInApplication].ToString();
}
}
}