public static void Main()
var app = new ApplicationContext("user=blah;password=meh");
public Connection(string connectionString)
private Connection connection;
public UserService(Connection connection)
this.connection = connection;
private UserService userService;
public Server(UserService userService)
this.userService = userService;
Console.WriteLine("Starting server...");
private Lazy<Connection> _connection;
private Lazy<UserService> _userService;
private Lazy<Server> _server;
public ApplicationContext(string connectionString)
_connection = new(() => new Connection(connectionString));
_userService = new(() => new UserService(Connection));
_server = new(() => new Server(UserService));
public Connection Connection { get => _connection.Value; }
public UserService UserService { get => _userService.Value; }
public Server Server { get => _server.Value; }