Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
 internal ExecutionContextInstance(IPathCalculator pathCalculator)
     : base(pathCalculator)
 {
 }
 public RailRoadManager()
 {
     _pathCalculator = new PathCalculator();
 }
Exemplo n.º 5
0
 protected ExecutionContext(IPathCalculator pathCalculator)
 {
     _pathCalculator  = pathCalculator;
     _externalModules = new List <IExternalModule>();
 }