Často se mi stává, že při vývoji v týmu potřebuju mít např. connection string podle sebe. I když mám k dispozici nějakou sdílenou databázi, tak rád provádím “harakiri” u sebe na notebooku. Jako source control používám TFS, takže pokud si upravím App.config, změny se projeví i u ostatních a neaktualizovat vždy na nejnovější verzi web.configu mě spíše děsí. Napadlo mě, co takhle vracet jednotlivé konfigurační hodnoty, podle uživatele. Každý z nás je přihlášen do systému pod nějakým účtem tak proč toho nevyužít. App.config by mohl například vypadat následovně:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="release" connectionString="..."/>
    <add name="lukas" connectionString="lukas nb"/>
    <add name="pepa" connectionString="pepa nb"/>
  </connectionStrings>
</configuration>

existovalo by tedy několik variant connection stringu a stačilo by nyní pak vytvořit třídu, která by podle identity vracela správnou hodnotu:

public static class Config
{
    public static string ConnectionString
    {
        get
        {
#if DEBUG
            WindowsIdentity identity = WindowsIdentity.GetCurrent();
            if (identity == null)
                throw new Exception("Nelze overit identitu");
 
            switch (identity.Name.ToLower())
            {
                case "ac\\kubisl":
                    return ConfigurationManager.ConnectionStrings["lukas"].ConnectionString;
                case "pepa":
                    return ConfigurationManager.ConnectionStrings["pepa"].ConnectionString;
                default:
                    return ConfigurationManager.ConnectionStrings["release"].ConnectionString;
            }
#endif
            return ConfigurationManager.ConnectionStrings["release"].ConnectionString;
        }
    }
}

Řešili jste někdy podobný problém a máte nějaké elegantní řešení?