private static void ProcessConfiguration(IConfiguration config)
{
const string ConnectionStringKey = "connection.connection_string";
for(int i = 0; i < config.Children.Count; ++i)
{
IConfiguration property = config.Children[i];
if (property.Name.IndexOf(ConnectionStringKey) >= 0)
{
String value = property.Value;
Regex connectionStringRegex = new Regex(@"ConnectionString\s*=\s*\$\{(?<ConnectionStringName>[^}]+)\}");
if (connectionStringRegex.IsMatch(value))
{
string connectionStringName = connectionStringRegex.Match(value).
Groups["ConnectionStringName"].Value;
value = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
config.Children[i] = new MutableConfiguration(property.Name, value);
}
}
}
}
}