static void InitializeContainer(CommandLineParameters parameters) { var builder = new ContainerBuilder(); builder.RegisterType <StrPathCalculator>().As <IPathCalculator>().SingleInstance(); builder.RegisterType <ConsolePrinter>().As <IPrinter>().SingleInstance(); builder.Register( ctx => parameters.IsConsole() ? (IResultWriter)(new ConsoleWriter()) : (new FileWriter(parameters.ResultFile, ctx.Resolve <IPrinter>())) ).SingleInstance(); builder.Register( ctx => { IFileHandler result = null; IResultWriter writer = ctx.Resolve <IResultWriter>(); IPathCalculator calculator = ctx.Resolve <IPathCalculator>(); IPrinter printer = ctx.Resolve <IPrinter>(); switch (parameters.GetAction()) { case Core.Action.All: result = new SimpleFileHandler(printer); break; case Core.Action.Cs: result = new CsFileHandler(printer); break; case Core.Action.ReversedOne: result = new ReverseOneFileHandler(printer); break; case Core.Action.ReversedTwo: result = new ReverseTwoFileHandler(printer); break; default: throw new Exception($"Invalid action: [{parameters.ActionStr}]"); } return(result); } ).InstancePerLifetimeScope(); builder.Register <IDirectoryHandler>( ctx => new DirectoryHandler(parameters.StartDirectory, ctx.Resolve <IFileHandler>(), ctx.Resolve <IResultWriter>(), ctx.Resolve <IPathCalculator>(), ctx.Resolve <IPrinter>()) ).InstancePerLifetimeScope(); builder.RegisterType <Scanner>().As <IScanner>().InstancePerLifetimeScope(); _container = builder.Build(); }
public DirectoryHandler(string path, IFileHandler handler, IResultWriter writer, IPathCalculator calculator, IPrinter printer) { if (string.IsNullOrWhiteSpace(path) || !Directory.Exists(path)) { throw new ArgumentException(nameof(path)); } _fileHandler = handler ?? throw new ArgumentNullException(nameof(handler)); _resultWriter = writer ?? throw new ArgumentNullException(nameof(writer)); _pathCalculator = calculator ?? throw new ArgumentNullException(nameof(calculator)); _startPath = Path.GetFullPath(path); _printer = printer; }
internal ExecutionContextInstance(IPathCalculator pathCalculator) : base(pathCalculator) { }
public RailRoadManager() { _pathCalculator = new PathCalculator(); }
protected ExecutionContext(IPathCalculator pathCalculator) { _pathCalculator = pathCalculator; _externalModules = new List <IExternalModule>(); }