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>(); }