public ChessApp(IConsoleIO console, IFileIO fileIO) { Console = console ?? throw new ArgumentNullException(nameof(console)); FileIO = fileIO ?? throw new ArgumentNullException(nameof(fileIO)); RulesEngine = new RulesEngine(); AiPlayer = new AiPlayer(RulesEngine); FileStorage = new FileStorage(FileIO); var lazyConsolePlayer = new LateBindingPlayerAdapter(); GameFlow = new GameFlow(lazyConsolePlayer, AiPlayer, RulesEngine); ConsoleUI = new ConsoleUI(GameFlow, Console, FileStorage, RulesEngine); lazyConsolePlayer.Bind(ConsoleUI); }
public ChessApp(IConsoleIO console, IFileIO fileIO) { // TODO: How to replace this boilerplate code with auto-generated? // Maybe, classical DI infrastructure could be used here in a local scope? Console = console ?? throw new ArgumentNullException(nameof(console)); FileIO = fileIO ?? throw new ArgumentNullException(nameof(fileIO)); RulesEngine = new RulesEngine(); AiPlayer = new AiPlayer(RulesEngine); FileStorage = new FileStorage(FileIO); var lazyConsolePlayer = new LateBindingPlayerAdapter(); GameFlow = new GameFlow(lazyConsolePlayer, AiPlayer, RulesEngine); ConsoleUI = new ConsoleUI(GameFlow, Console, FileStorage, RulesEngine); lazyConsolePlayer.Bind(ConsoleUI); }