static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var serviceProvider = new ServiceCollection() .AddSingleton <IRequestFacade, RequestFacade>() .AddSingleton <ILoginManager, LoginManager>() .AddSingleton <ILobbyManager, LobbyManager>() .AddSingleton <IGameManager, GameManager>() .AddSingleton <PlayerManager, PlayerManager>() .AddSingleton <GameUpdater, GameUpdater>() .AddSingleton <GameController, GameController>() .AddSingleton <IStorage, Storage>() .AddSingleton <LoginController, LoginController>() .AddSingleton <LobbyController, LobbyController>() .AddSingleton <ISubject <LoginResponse>, LoginSubject>() .AddSingleton <IUdpReceiver, UdpReceiver>() .AddSingleton <IUdpSender, UdpSender>() .AddSingleton <ISender, SenderAdapter>() .AddTransient <LoginForm>() .AddTransient <LobbyForm>() .AddTransient <GameForm>() .BuildServiceProvider(); IUdpReceiver udpReceiver = serviceProvider.GetService <IUdpReceiver>(); udpReceiver.Connect("127.0.0.1", 23456); IUdpSender udpSender = serviceProvider.GetService <IUdpSender>(); udpSender.Connect(udpReceiver.Socket); var loginForm = serviceProvider.GetService <LoginForm>(); Application.Run(loginForm); }