For .NET Core use appsettings.json. In the code below, connection data is from a class project used in a windows form project. This allows any project to use the connection logic.
{
"ConnectionsConfiguration": {
"ActiveEnvironment": "Production",
"Development": "Dev connection string goes here",
"Stage": "Stage connection string goes here",
"Production": "Prod connection string goes here"
}
}
The following comes from the following class project and the form project.
Environments
public enum ConnectionsConfiguration
{
Development,
Stage,
Production
}
Base container
public class ConfigurationMap
{
public string ActiveEnvironment { get; set; }
public string Development { get; set; }
public string Stage { get; set; }
public string Production { get; set; }
}
Class to get settings from appsettings.json
public class ConfigurationHelper
{
public static ConnectionsConfiguration CurrentEnvironment { get; private set; }
/// <summary>
/// Current connection string by 'ActiveEnvironment'
/// </summary>
/// <returns>Connection string</returns>
public static string ConnectionString()
{
var configuration = Builder();
ConfigurationMap map = configuration.GetSection("ConnectionsConfiguration").Get<ConfigurationMap>();
ConnectionsConfiguration environment = map.ActiveEnvironment
.ToEnum(ConnectionsConfiguration.Development);
CurrentEnvironment = environment;
return environment switch
{
ConnectionsConfiguration.Development => map.Development,
ConnectionsConfiguration.Stage => map.Stage,
ConnectionsConfiguration.Production => map.Production,
_ => map.Development
};
}
/// <summary>
/// Get all environment connection strings
/// </summary>
/// <returns><see cref="ConfigurationMap"/></returns>
public static ConfigurationMap Connections()
{
var configuration = Builder();
return configuration.GetSection("ConnectionsConfiguration").Get<ConfigurationMap>();
}
private static IConfigurationRoot Builder()
{
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
var configuration = builder.Build();
return configuration;
}
}
Get connection in windows form project.
using System;
using System.Data.SqlClient;
using static ConfigurationLibrary.Classes.ConfigurationHelper;
namespace MultiplesForm.Classes
{
public class Operations
{
public static bool TestConnection()
{
try
{
using var cn = new SqlConnection() { ConnectionString = ConnectionString() };
cn.Open();
return true;
}
catch (Exception)
{
return false;
}
}
}
}
using System.Text;
using System.Windows.Forms;
using ConfigurationLibrary.Classes;
using static ConfigurationLibrary.Classes.ConfigurationHelper;
namespace MultiplesForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ConfigurationMap map = Connections();
StringBuilder builder = new();
builder.AppendLine($"Current connection: {ConnectionString()}");
builder.AppendLine($"Current environment: {CurrentEnvironment}");
builder.AppendLine("");
builder.AppendLine($"Development: {map.Development}");
builder.AppendLine($"Stage: {map.Stage}");
builder.AppendLine($"Prod: {map.Production}");
ResultsTextBox.Text = builder.ToString();
ResultsTextBox.Select(0, 0);
}
}
}
