public void Register(ContainerBuilder builder)
        {
            builder.RegisterModule<NLogModule>();
            builder.RegisterEventing();
            builder.RegisterApiControllers(ThisAssembly);
            builder.RegisterLifetimeHubManager();
            builder.RegisterHubs(ThisAssembly);
            builder.RegisterType<HomeControlServiceController>();
            builder.RegisterType<ZWaveNotificationService>();

            builder.RegisterAssemblyTypes(typeof(DependencyRegistrar).Assembly)
                .Named<AbstractZWaveNotification>(t => t.Name);

            builder.Register(ctx =>
            {
                HomeControlConfiguration hcCfg = null;
                try
                {
                    hcCfg = (HomeControlConfiguration)ConfigurationManager.GetSection("HomeControl");
                }
                catch (Exception ex)
                {
                    LogManager.GetCurrentClassLogger().Fatal(ex);
                }

                return hcCfg ?? new HomeControlConfiguration();

            }).As<HomeControlConfiguration>();

            builder.Register(ctx => ctx.Resolve<HomeControlConfiguration>().ZWaveConfiguration);
            builder.Register(ctx => ctx.Resolve<HomeControlConfiguration>().WebApi);

            builder.RegisterType<OpenZWaveConfigurator>();
        }
        public static void Bootstrap(Assembly entryAssembly)
        {
            var builder = new ContainerBuilder();

            builder.RegisterControllers(entryAssembly);
            builder.RegisterLifetimeHubManager();
            builder.RegisterHubs(entryAssembly);
            builder.RegisterAssemblyModules(typeof(DependencyInjectionConfiguration).Assembly);
            builder.RegisterAssemblyModules(entryAssembly);

            var container = builder.Build();

            GlobalHost.DependencyResolver = new Autofac.Integration.SignalR.AutofacDependencyResolver(container);
            DependencyResolver.SetResolver(new Autofac.Integration.Mvc.AutofacDependencyResolver(container));
        }
 /// <summary>
 /// 构建服务并设置SignalR平台的Resolver
 /// </summary>
 /// <param name="services">服务映射信息集合</param>
 /// <param name="assemblies">要检索的程序集集合</param>
 protected override IServiceProvider BuildAndSetResolver(IServiceCollection services, Assembly[] assemblies)
 {
     ContainerBuilder builder = new ContainerBuilder();
     builder.RegisterHubs(assemblies).AsSelf().PropertiesAutowired();
     builder.RegisterLifetimeHubManager();
     builder.Populate(services);
     IContainer container = builder.Build();
     IDependencyResolver resolver = new AutofacDependencyResolver(container);
     GlobalHost.DependencyResolver = resolver;
     SignalRIocResolver.LifetimeResolveFunc = type =>
     {
         ILifetimeScope scope = CallContext.LogicalGetData(LifetimeHubManager.LifetimeScopeKey) as ILifetimeScope;
         if (scope == null)
         {
             return null;
         }
         return scope.ResolveOptional(type);
     };
     return resolver.Resolve<IServiceProvider>();
 }