Vadim,
Ich mache genau das, was Sie vorschlagen und verwende eine statische Klasse für diesen Zweck. Sie haben dann den Vorteil von stark typisierten Accessors PLUS der Möglichkeit, Überschreibungen (in Form von Methoden) hinzuzufügen, wenn Sie diese benötigen.
hier ein Ausschnitt:
public static class Config
{
private const string NotSet = "**VALUE NOT SET**";
private const int pageSize = 5;
public static string CustomCache
{
get
{
return ConfigurationManager.AppSettings["CustomCache"] ?? NotSet;
}
}
public static int PageSize
{
get
{
// simple default - no setter
return pageSize;
}
}
}
typische Verwendung:
items = _repository.GetPaged(pageNumber, Config.PageSize)
In der obigen Klasse werden einige Einstellungen von den App-Einstellungen in der web.config als "2. Generation" bezeichnet, aber mit starker Typisierung in den Klassen, um die Fehlerprüfung zur Laufzeit zu gewährleisten usw. Andere sind rein statische Einstellungen, die in der Klasse definiert sind.
Es ist die Flexibilität, all das zu tun, die (meiner Meinung nach) diesen Ansatz sowohl attraktiv als auch eine echte Stärke macht.