public void UpdateMeeting_should_save_a_meeting()
        {
            DependencyRegistrar.EnsureDependenciesRegistered();
            AutoMapperConfiguration.Configure();
            ObjectFactory.Inject(typeof(IUnitOfWork), S <IUnitOfWork>());

            var repository = S <IRepository <Meeting> >();

            ObjectFactory.Inject(typeof(IRepository <Meeting>), repository);
            var meetingRepository = S <IMeetingRepository>();

            ObjectFactory.Inject(typeof(IMeetingRepository), meetingRepository);

            var userGroupRepository = S <IUserGroupRepository>();

            userGroupRepository.Stub(groupRepository => groupRepository.GetById(Guid.Empty)).Return(new UserGroup());
            ObjectFactory.Inject(typeof(IUserGroupRepository), userGroupRepository);

            RulesEngineConfiguration.Configure(typeof(UpdateMeetingMessageConfiguration));
            var rulesRunner = new RulesEngine();

            var result =
                rulesRunner.Process(
                    new MeetingInput {
                Description = "New Meeting", StartDate = DateTime.Now, EndDate = DateTime.Now
            },
                    typeof(MeetingInput));

            result.Successful.ShouldBeTrue();
            result.ReturnItems.Get <Meeting>().ShouldNotBeNull();

            meetingRepository.AssertWasCalled(r => r.Save(null), options => options.IgnoreArguments());
        }
        public void Delete_user_group_should_do_just_that()
        {
            DependencyRegistrar.EnsureDependenciesRegistered();
            AutoMapperConfiguration.Configure();
            ObjectFactory.Inject(typeof(IUnitOfWork), S <IUnitOfWork>());


            var repository  = S <IUserGroupRepository>();
            var repositoryT = S <IRepository <UserGroup> >();

            repositoryT.Stub(repository1 => repository1.GetById(Guid.Empty)).Return(new UserGroup());
            ObjectFactory.Inject(typeof(IRepository <UserGroup>), repositoryT);
            ObjectFactory.Inject(typeof(IUserGroupRepository), repository);

            var userRepository = S <IUserRepository>();

            ObjectFactory.Inject(typeof(IUserRepository), userRepository);


            RulesEngineConfiguration.Configure(typeof(UpdateUserConfiguration));

            var rulesRunner = new RulesEngine();

            var result = rulesRunner.Process(new DeleteUserGroupInput
            {
                UserGroup = Guid.Empty,
            }, typeof(DeleteUserGroupInput));

            result.Successful.ShouldBeTrue();
            result.ReturnItems.Get <UserGroup>().ShouldNotBeNull();

            repository.AssertWasCalled(r => r.Delete(null), options => options.IgnoreArguments());
        }
        public void Login_user()
        {
            DependencyRegistrar.EnsureDependenciesRegistered();
            AutoMapperConfiguration.Configure();
            ObjectFactory.Inject(typeof(IUnitOfWork), S <IUnitOfWork>());

            var repository = S <IUserRepository>();

            ObjectFactory.Inject(typeof(IUserRepository), repository);

            var auth = S <IAuthenticationService>();

            ObjectFactory.Inject(typeof(IAuthenticationService), auth);
            auth.Stub(service => service.PasswordMatches(null, "")).IgnoreArguments().Return(true);

            repository.Stub(groupRepository => groupRepository.GetByUserName("foo")).Return(new User());
            RulesEngineConfiguration.Configure(typeof(UpdateUserGroupMessageConfiguration));

            var rulesRunner = new RulesEngine();

            var result = rulesRunner.Process(new LoginProxyInput
            {
                Username = "******",
                Password = "******",
            }, typeof(LoginProxyInput));

            result.Successful.ShouldBeTrue();
            result.ReturnItems.Get <User>().ShouldNotBeNull();
        }
Example #4
0
 public void Configuration(IAppBuilder app)
 {
     // 有关如何配置应用程序的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=316888
     ConfigureAuth(app);
     //Autofac 依赖注入
     DependencyRegistrar.RegisterDependency();
 }
Example #5
0
 public void SetUp()
 {
     DependencyRegistrar.RegisterDependencies();
     IoC.Resolve <IAutoMapperBootstrapper>().Bootstrap();
     _eventMetricService = IoC.Resolve <IEventMetricsService>();
     _dailyPatientRecapReportPollingAgent = IoC.Resolve <IDailyPatientRecapReportPollingAgent>();
 }
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            config.SuppressDefaultHostAuthentication();
            config.Filters.Add(new HostAuthenticationFilter("Bearer"));

            // Enable CORS
            config.EnableCors();

            // Web API routes
            config.MapHttpAttributeRoutes();


            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

            var builder = new ContainerBuilder();

            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
            DependencyRegistrar.Register(builder, config);

            config.Formatters.JsonFormatter.SerializerSettings.Formatting =
                Newtonsoft.Json.Formatting.Indented;

            config.Formatters.JsonFormatter.SerializerSettings.Converters.Add
                (new StringEnumConverter());
        }
        public void Update_UserGroup_should_save_a_usergroup()
        {
            DependencyRegistrar.EnsureDependenciesRegistered();
            AutoMapperConfiguration.Configure();
            ObjectFactory.Inject(typeof(IUnitOfWork), S <IUnitOfWork>());

            var repository = S <IRepository <UserGroup> >();

            ObjectFactory.Inject(typeof(IRepository <UserGroup>), repository);

            var userGroupRepository = S <IUserGroupRepository>();

            ObjectFactory.Inject(typeof(IUserGroupRepository), userGroupRepository);

            var userRepository = S <IUserRepository>();

            ObjectFactory.Inject(typeof(IUserRepository), userRepository);

            RulesEngineConfiguration.Configure(typeof(UpdateUserGroupMessageConfiguration));
            var rulesRunner = new RulesEngine();

            var result = rulesRunner.Process(new UserGroupInput
            {
                Name     = "New Meeting",
                Users    = new List <UserSelectorInput>(),
                Sponsors = new List <UpdateSponsorInput>(),
            }, typeof(UserGroupInput));

            result.Successful.ShouldBeTrue();
            result.ReturnItems.Get <UserGroup>().ShouldNotBeNull();

            userGroupRepository.AssertWasCalled(r => r.Save(null), options => options.IgnoreArguments());
        }
Example #8
0
        public void DataLoader()
        {
//			Logger.EnsureInitialized();
            DependencyRegistrar.EnsureDependenciesRegistered();
            ObjectFactory.Inject(typeof(IUserSession), new UserSessionStub(null));
            LoadData();
        }
Example #9
0
        public static void Run()
        {
            var assembly = Assembly.GetExecutingAssembly();

            DependencyRegistrar.Register(assembly);
            AutoMapperConfiguration.Configure();
        }
Example #10
0
        static void Main(string[] args)
        {
            try
            {
                DependencyRegistrar.RegisterDependencies();
                var serviceToRun = IoC.Resolve <ResultExportService>();

                var logger = IoC.Resolve <ILogManager>().GetLogger("Jobs_ResultExportService");

                logger.Info("Starting Job");
                var autoMapperBootstrapper = new AutoMapperBootstrapper();
                autoMapperBootstrapper.Bootstrap();

                if (Environment.UserInteractive)
                {
                    IoC.Resolve <AnthemResultPdfDownloadPollingAgent>().PollForPdfDownload();
                    // Task.Factory.StartNew(() => serviceToRun.Start(args));
                }
                else
                {
                    ServiceBase.Run(serviceToRun);
                }
            }
            catch (Exception ex)
            {
                IoC.Resolve <ILogManager>().GetLogger("Jobs.ResultExportService").Info("\n\nSystem Failure! Message: " + ex.Message + "\n\tStackTrace: " + ex.StackTrace);
            }
        }
Example #11
0
 public DenormalizerHandler()
 {
     _geoCodingService      = new ReverseGeoCodingService();
     _dbContextScopeFactory = DependencyRegistrar.ResolveDbContextScopeFactory();
     _streamLock            = new ConcurrentDictionary <String, Semaphore>();
     _redisCache            = DependencyRegistrar.ResolveRedisCache();
 }
Example #12
0
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main(string[] args)
        {
            try
            {
                DependencyRegistrar.RegisterDependencies();
                IoC.Resolve <ILogManager>().GetLogger("Jobs.TermByAbsence").Info("Starting jobs...");

                var autoMapperBootstrapper = new AutoMapperBootstrapper();
                autoMapperBootstrapper.Bootstrap();

                var serviceToRun = IoC.Resolve <TermByAbsence>();

                if (Environment.UserInteractive)
                {
                    // IoC.Resolve<Falcon.App.Core.Medical.IMemberTermByAbsenceService>().SubscribeForEligibiltyUpdate(1201);
                    // IoC.Resolve<Falcon.App.Core.Medical.IMemberUploadbyAcesPollingAgent>().PollForMemberUploadbyAces();
                    //Task.Factory.StartNew(() => serviceToRun.Start(args));
                }
                else
                {
                    ServiceBase.Run(serviceToRun);
                }
            }

            catch (Exception ex)
            {
                IoC.Resolve <ILogManager>().GetLogger("Jobs.TermByAbsence").Info("\n\nSystem Failure! Message: " + ex.Message + "\n\tStackTrace: " + ex.StackTrace);
            }
        }
Example #13
0
        public void CheckDiIsWorkingOrNot()
        {
            DependencyRegistrar.RegisterDependencies();
            var notificationPollingAgent = IoC.Resolve <INotificationPollingAgent>();

            notificationPollingAgent.PollForNotifications();
        }
Example #14
0
        public void EnsureInterfacesWithSimilarlyNamedTypesAreRegistered()
        {
            DependencyRegistrar.RegisterDependencies();
            MethodInfo resolveMethod = typeof(IoC).GetMethod("Resolve");

            AssemblyName[]         assemblyNames = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
            IEnumerable <Assembly> assemblies    = assemblyNames.Where(an => an.FullName.StartsWith("Falcon")).Select(Assembly.Load);
            IEnumerable <Type>     types         = assemblies.SelectMany(a => a.GetTypes());

            var invalidMappings = new List <string>();

            foreach (Type type in types.Where(t => t.IsClass))
            {
                foreach (Type implementedInterface in type.GetInterfaces())
                {
                    if (implementedInterface.Name == "I" + type.Name)
                    {
                        try
                        {
                            MethodInfo genericMethod = resolveMethod.MakeGenericMethod(new[] { implementedInterface });
                            genericMethod.Invoke(null, null);
                        }
                        catch
                        {
                            invalidMappings.Add(string.Format("{0} does not implement {1}", type.FullName, implementedInterface.FullName ?? implementedInterface.Name));
                        }
                    }
                }
            }

            Assert.IsEmpty(invalidMappings, string.Join(Environment.NewLine, invalidMappings.ToArray()));
        }
Example #15
0
        public void EnsureUserRepositoryDependanciesRegistered()
        {
            DependencyRegistrar.RegisterDependencies();


            var userRepository = IoC.Resolve <IOrganizationService>();
        }
Example #16
0
        public void StartService()
        {
            ContainerBuilder builder = new ContainerBuilder();
            var dependencyRegistrar  = new DependencyRegistrar();

            dependencyRegistrar.Register(builder);
            //_bus = DependencyRegistrar.ResolveServiceBus();
            //try
            //{
            //    _bus.StartAsync();
            //}
            //catch (Exception e)
            //{
            //    Debug.WriteLine(e.Message);
            //    _bus.StopAsync();
            //}
            try
            {
                MassTransitConfig.ConfigureReceiveBus((cfg, hst) =>
                                                      cfg.ReceiveEndpoint(hst, "Teltonika.endpoint", e =>
                                                                          e.Consumer <DenormalizerHandler>())

                                                      ).Start();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                //  throw;
            }
        }
Example #17
0
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main(string[] args)
        {
            try
            {
                DependencyRegistrar.RegisterDependencies();
                var serviceToRun = IoC.Resolve <ImportService>();

                IoC.Resolve <ILogManager>().GetLogger("Jobs.ImportService").Info("Starting jobs...");

                var autoMapperBootstrapper = new AutoMapperBootstrapper();
                autoMapperBootstrapper.Bootstrap();

                if (Environment.UserInteractive)
                {
                    Task.Factory.StartNew(() => serviceToRun.Start(args));
                }
                else
                {
                    ServiceBase.Run(serviceToRun);
                }
            }
            catch (Exception ex)
            {
                IoC.Resolve <ILogManager>().GetLogger("Jobs.ImportService").Info("\n\nSystem Failure! Message: " + ex.Message + "\n\tStackTrace: " + ex.StackTrace);
            }
        }
Example #18
0
        public void Init()
        {
            var autoMapperBootstrapper = new AutoMapperBootstrapper();

            autoMapperBootstrapper.Bootstrap();

            DependencyRegistrar.RegisterDependencies();

            _organizationService        = IoC.Resolve <IOrganizationService>();
            _corporateAccountRepository = IoC.Resolve <ICorporateAccountRepository>();

            var organizationEditModel = new OrganizationEditModel
            {
                Name            = "TestOrg",
                Description     = "TestOrg Description",
                BusinessAddress =
                    new AddressEditModel()
                {
                    StreetAddressLine1 = "StreetAddressLine1",
                    StreetAddressLine2 = "StreetAddressLine1",
                    City      = "Austin",
                    StateId   = 123,
                    CountryId = 1,
                    ZipCode   = "78705"
                },
                BillingAddress =
                    new AddressEditModel()
                {
                    StreetAddressLine1 = "StreetAddressLine11",
                    StreetAddressLine2 = "StreetAddressLine11",
                    City      = "Austin",
                    StateId   = 123,
                    CountryId = 1,
                    ZipCode   = "78701"
                },
                PhoneNumber = new PhoneNumber()
                {
                    AreaCode = "+1", Number = "232131"
                },
                FaxNumber = new PhoneNumber()
                {
                    AreaCode = "+1", Number = "232131"
                },
                Email = "*****@*****.**"
            };

            _corporateAccountEditModel = new CorporateAccountEditModel
            {
                OrganizationEditModel = organizationEditModel,
                ContractNotes         = "Some Contract",
                DefaultPackages       =
                    new List <Package>
                {
                    new Package()
                    {
                        Id = 1, Name = "abc temp"
                    }
                }
            };
        }
Example #19
0
        protected void Application_Start(object sender, EventArgs e)
        {
            AreaRegistration.RegisterAllAreas();


            RegisterRoutes(RouteTable.Routes);
            DependencyRegistrar.RegisterDependencies();
            var autoMapperBootstrapper = new AutoMapperBootstrapper();

            autoMapperBootstrapper.Bootstrap();
            ControllerBuilder.Current.SetControllerFactory(new ActionControllerFactory());

            RegisterGlobalFilters(GlobalFilters.Filters);
            IoC.Resolve <ILogManager>().GetLogger <Global>().Info("Application started up @" + DateTime.Now);


            DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
            var validatorProvider = new FluentValidationModelValidatorProvider(new ValidatorFactory());

            ModelValidatorProviders.Providers.Add(validatorProvider);

            ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());
            ModelBinders.Binders.Add(typeof(decimal?), new DecimalModelBinder());

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        }
Example #20
0
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main(string[] args)
        {
            try
            {
                DependencyRegistrar.RegisterDependencies();

                var serviceToRun = IoC.Resolve <MedicareJobService>();

                IoC.Resolve <ILogManager>().GetLogger("MedicareJobService").Info("Starting jobs...");

                var autoMapperBootstrapper = new AutoMapperBootstrapper();
                autoMapperBootstrapper.Bootstrap();


                if (Environment.UserInteractive)
                {
                    //IoC.Resolve<ISyncCustomerResultPollingAgent>().Sync();
                    //IoC.Resolve<ISyncCustomerPollingAgent>().Sync();
                    //IoC.Resolve<ISyncHealthPlanPollingAgent>().Sync();
                    //IoC.Resolve<ISyncCustomerResultPollingAgent>().Sync();
                    //IoC.Resolve<ISyncRapsPollingAgent>().Sync();
                    //IoC.Resolve<ISyncEventTestPollingAgent>().Sync();
                    //IoC.Resolve<ISyncResultsReadyForCodingPollingAgent>().PollForSync();
                    Task.Factory.StartNew(() => serviceToRun.Start(args));
                }
                else
                {
                    ServiceBase.Run(serviceToRun);
                }
            }
            catch (Exception ex)
            {
                IoC.Resolve <ILogManager>().GetLogger("MedicareJobService").Info("\n\nSystem Failure! Message: " + ex.Message + "\n\tStackTrace: " + ex.StackTrace);
            }
        }
Example #21
0
 protected void Application_Start()
 {
     AreaRegistration.RegisterAllAreas();
     GlobalConfiguration.Configure(WebApiConfig.Register);
     RouteConfig.RegisterRoutes(RouteTable.Routes);
     DependencyRegistrar.BuildContainer();
 }
        public PodStaffAssignmentRepositoryTester()
        {
            DependencyRegistrar.RegisterDependencies();

            IoC.Resolve <IAutoMapperBootstrapper>().Bootstrap();
            _podStaffAssignmentRepository = IoC.Resolve <IPodStaffAssignmentRepository>();
        }
Example #23
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var appSettingsSection = Configuration.GetSection("AppSettings");

            services.Configure <AppSettings>(appSettingsSection);

            services.AddMvc();
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
            {
                options.RequireHttpsMetadata      = false;
                options.SaveToken                 = true;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer           = true,
                    ValidateAudience         = true,
                    ValidateLifetime         = true,
                    ValidateIssuerSigningKey = true,
                    ValidIssuer      = Configuration["AppSettings:Issuer"],
                    ValidAudience    = Configuration["AppSettings:Audience"],
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["AppSettings:Secret"])),
                    ClockSkew        = TimeSpan.Zero
                };
            });
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "Currency Provider", Version = "v1"
                });
                c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    Description = @"JWT Authorization header using the Bearer scheme. \r\n\r\n 
                      Enter 'Bearer' [space] and then your token in the text input below.
                      \r\n\r\nExample: 'Bearer 12345abcdef'",
                    Name        = "Authorization",
                    In          = ParameterLocation.Header,
                    Type        = SecuritySchemeType.ApiKey,
                    Scheme      = JwtBearerDefaults.AuthenticationScheme
                });
                c.AddSecurityRequirement(new OpenApiSecurityRequirement()
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id   = "Bearer"
                            },
                            Scheme = JwtBearerDefaults.AuthenticationScheme,
                            Name   = "Bearer",
                            In     = ParameterLocation.Header
                        },
                        new List <string>()
                    }
                });
            });
            DependencyRegistrar.Register(services);

            services.AddControllers();
        }
Example #24
0
 public ServerErrorHttpModuleTests()
 {
     DependencyRegistrar
     .StandardDependencies()
     .WithFakeLogger()
     .With(_linkGenerator.Object);
 }
        public void WhenRegisterDependencies_MixedTypes_CallsRegisterOnAll()
        {
            var containers = new[]
            {
                new Mock <IDependencyContainer>(),
                new Mock <IDependencyContainer>(),
                new Mock <IDependencyContainer>()
            };
            var containers2 = new[]
            {
                new Mock <IInitializableContainer>(),
                new Mock <IInitializableContainer>(),
                new Mock <IInitializableContainer>()
            };

            var unityContainer = Mock.Of <IUnityContainer>();
            var registrar      = new DependencyRegistrar(unityContainer);

            registrar.RegisterDependencies(containers
                                           .Select(x => x.Object)
                                           .Concat(containers2.Select(x => x.Object))
                                           .ToArray());

            foreach (var container in containers)
            {
                container.Verify(x => x.RegisterDependencies(unityContainer), Times.Once());
            }
            foreach (var container in containers2)
            {
                container.Verify(x => x.RegisterDependencies(unityContainer), Times.Once());
            }
        }
Example #26
0
        public void CheckPaymentGatewayisConfiguredornot()
        {
            DependencyRegistrar.RegisterDependencies();


            IPaymentProcessor paymentProcessor = IoC.Resolve <IPaymentProcessor>();

            paymentProcessor.ChargeCreditCard(new CreditCardProcessorProcessingInfo
            {
                CreditCardNo      = "4007000000027",
                SecurityCode      = "211",
                ExpiryMonth       = 12,
                ExpiryYear        = 2012,
                CardType          = "Visa",
                Price             = "12",
                FirstName         = "Bidhan",
                LastName          = "Bidhan",
                BillingAddress    = "My Address",
                BillingCity       = "Austin",
                BillingState      = "Texas",
                BillingPostalCode = "78705",
                BillingCountry    = "US",
                Email             = "mail.email.com",
                IpAddress         = "198.172.10.10",
                Currency          = "USD",
                OrderId           = "123456789"
            });
        }
Example #27
0
        static void Main(string[] args)
        {
            try
            {
                DependencyRegistrar.RegisterDependencies();
                var servicesToRun = new ConsoleServiceBase[]
                {
                    IoC.Resolve <NotificationService>()
                };

                IoC.Resolve <ILogManager>().GetLogger("Jobs").Info("Starting jobs...");

                var autoMapperBootstrapper = new AutoMapperBootstrapper();
                autoMapperBootstrapper.Bootstrap();

                if (Environment.UserInteractive)
                {
                    foreach (var serviceBase in servicesToRun)
                    {
                        ConsoleServiceBase @base = serviceBase;
                        Task.Factory.StartNew(() => @base.Start(args));
                    }
                }
                else
                {
                    ServiceBase.Run(servicesToRun);
                }
            }
            catch (Exception ex)
            {
                IoC.Resolve <ILogManager>().GetLogger("Jobs").Info("\n\nSystem Failure! Message: " + ex.Message + "\n\tStackTrace: " + ex.StackTrace);
            }
        }
        public void SetUp()
        {
            DependencyRegistrar.RegisterDependencies();
            var autoMapperBootstrapper = new AutoMapperBootstrapper();

            autoMapperBootstrapper.Bootstrap();
        }
 public TeltonikaHandler()
 {
     _semaphore               = new SemaphoreSlim(1, 4);
     DbContextScopeFactory    = DependencyRegistrar.ResolveDbContextScopeFactory();
     _reverseGeoCodingService = DependencyRegistrar.ResolveGeoCodeService();
     InitMapper();
 }
 public void SetUp()
 {
     IoC.Register <ISettings, FakeSettings>();
     DependencyRegistrar.RegisterDependencies();
     IoC.Resolve <IAutoMapperBootstrapper>().Bootstrap();
     _medicareQuestionRepository = IoC.Resolve <MedicareQuestionRepository>();
 }
Example #31
0
        private static void Main(string[] args)
        {
            var builder = new ContainerBuilder();
            var registrar = new DependencyRegistrar();
            registrar.Register(builder);
            var container = builder.Build();

            using (var testScope = container.BeginLifetimeScope())
            {
                try
                {
                    testScope.Resolve<HomeControlServiceController>();
                }
                catch (DependencyResolutionException exception)
                {
                    LogManager.GetCurrentClassLogger().Fatal(exception);
                    return;
                }

            }

            var result = HostFactory.Run(cfg =>
            {
                cfg.SetDisplayName("Home Control");
                cfg.SetDescription("Automates the home with OpenZWave");
                cfg.SetServiceName("HomeControl");
                cfg.UseNLog();
                cfg.UseAutofacContainer(container);
                cfg.Service<HomeControlServiceController>(svcCfg =>
                {
                    svcCfg.ConstructUsingAutofacContainer();
                    svcCfg.WhenStarted((service, control) => service.Start(control));
                    svcCfg.WhenStopped((service, control) => service.Stop(control));
                });
            });

            switch (result)
            {
                case TopshelfExitCode.Ok:
                    return;

                default:
                    Debugger.Break();
                    break;
            }
        }
        private void EnsureDependenciesRegistered()
        {
            if (!_dependenciesRegistered)
            {
                lock (Lock)
                {
                    if (!_dependenciesRegistered)
                    {
                        Logger.Debug(this, "Registering types with StructureMap");
                        ObjectFactory.Reset();
                        var registrar = new DependencyRegistrar();
                        registrar.RegisterDependencies();
                        _dependenciesRegistered = true;

                    }
                }
            }
        }