48 lines
1.2 KiB
C#
48 lines
1.2 KiB
C#
using System;
|
|
using System.Collections.Specialized;
|
|
using System.Configuration;
|
|
|
|
namespace Config.Net.Stores
|
|
{
|
|
/// <summary>
|
|
/// Standard app.config (web.config) configuration store. Read-only.
|
|
/// </summary>
|
|
class AppConfigStore : IConfigStore
|
|
{
|
|
public string Name => "App.config";
|
|
|
|
public bool CanRead => true;
|
|
|
|
public bool CanWrite => false;
|
|
|
|
public string? Read(string key)
|
|
{
|
|
if(key == null) return null;
|
|
|
|
//first, look at appsettings and connection strings
|
|
string? value = ConfigurationManager.AppSettings[key] ?? ConfigurationManager.ConnectionStrings[key]?.ConnectionString;
|
|
|
|
if(value == null)
|
|
{
|
|
int idx = key.IndexOf('.');
|
|
if(idx != -1)
|
|
{
|
|
string sectionName = key.Substring(0, idx);
|
|
if(ConfigurationManager.GetSection(sectionName) is NameValueCollection nvsc)
|
|
{
|
|
string keyName = key.Substring(idx + 1);
|
|
value = nvsc[keyName];
|
|
}
|
|
}
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
public void Write(string key, string? value) => throw new NotSupportedException();
|
|
|
|
public void Dispose()
|
|
{
|
|
}
|
|
}
|
|
} |