static void Main(string[] args) { IKernel kernel = new StandardKernel(); // Container Register kernel.Bind<ILog>().ToMethod( x => { var scope = x.Request.ParentRequest.Service.FullName; var log = (ILog)LogManager.GetLogger(scope, typeof(Log)); return log; }); kernel.Bind<IParser>().To<FileParser>(); kernel.Bind<IResourceItemParser<string>>().To<JsonResourceItemParser>(); kernel.Bind<IVerificationProcessor<string>>().To<VerificationProcessor<string>>() .WithConstructorArgument("factory", new StringTypeResourceVerifierFactory()); kernel.Bind<IVerificationInvoker>().To<CompositeVerifier<string>>(); // Container Resolve IParser fileReader = kernel.Get<IParser>(new ConstructorArgument("filePath", args.First())); VerificationResult jsonStringFromFile = fileReader.Parse(); IResourceItemParser<string> parser = kernel.Get<IResourceItemParser<string>>(); IVerificationProcessor<string> processor = kernel.Get<IVerificationProcessor<string>>(); IVerificationInvoker invoker = kernel.Get<IVerificationInvoker>( new ConstructorArgument("parser", parser), new ConstructorArgument("processor", processor)); var result = invoker.VerifyEnvironment(jsonStringFromFile); foreach (VerificationResult verificationResult in result) { Console.ForegroundColor = GetColour(verificationResult.Type); Console.WriteLine(string.Format("{0}", verificationResult.Message)); Console.WriteLine(); Console.ResetColor(); } Console.WriteLine("Done ..."); Console.ReadKey(); // Container Release kernel.Release(invoker); kernel.Release(processor); kernel.Release(parser); kernel.Release(fileReader); }