protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();

            builder.RegisterModule(new RepositoryModule());
            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());
            builder.RegisterModule(new ViewModelModule());

            builder.RegisterType(typeof(NavigationService)).As(typeof(INavigationService)).InstancePerRequest();

            // OPTIONAL: Enable property injection in view pages.
            builder.RegisterSource(new ViewRegistrationSource());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
        /// <summary>
        /// 创建 MVC容器(包含Filter)
        /// </summary>
        public static void BuildMvcContainer()
        {
            var builder = new ContainerBuilder();
            //注册Module方法2 在Web.config中配制方式
            builder.RegisterModule(new ConfigurationSettingsReader("autofacMvc"));
            //加载 *.Controllers 层的控制器,否则无法在其他层控制器构造注入,只能在web层注入
            Assembly[] asm = GetAllAssembly("*.Controllers.dll").ToArray();
            builder.RegisterAssemblyTypes(asm);
            //注册仓储
            Assembly[] asmRepository = GetAllAssembly("*.Repository.dll").ToArray();
            builder.RegisterAssemblyTypes(asmRepository)
               .Where(t => t.Name.EndsWith("Repository"))
               .AsImplementedInterfaces();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
            builder.RegisterModelBinderProvider();


            //注册过滤器 
            builder.RegisterFilterProvider();
            builder.RegisterType<OperateAttribute>().PropertiesAutowired();//非global filter  属性注入
            builder.RegisterType<GlobalFilterAttribute>().SingleInstance();//global filter 注入
            builder.RegisterControllers(typeof(MvcApplication).Assembly);

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #3
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);


            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();



            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();

            builder.RegisterModule(new RepositoryModule());
            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Json default settings which only get parent entries not child
            //JsonConvert.DefaultSettings = () => new JsonSerializerSettings
            //{
            //    Formatting = Newtonsoft.Json.Formatting.Indented,
            //    ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
            //};
        }
        public static void Configure()
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<EFStoredGrantManager>().As<IStoredGrantManager>();
            builder.RegisterType<EFAuthorizationServerConfiguration>().As<IAuthorizationServerConfiguration>();
            builder.RegisterType<EFAuthorizationServerAdministration>().As<IAuthorizationServerAdministration>();
            builder.RegisterType<EFAuthorizationServerAdministratorsService>()
                   .As<IAuthorizationServerAdministratorsService>();

            //builder.RegisterType<Thinktecture.Samples.AssertionGrantValidator>().As<IAssertionGrantValidation>();

            builder.RegisterType<DefaultAssertionGrantValidator>().As<IAssertionGrantValidation>();
            builder.RegisterType<AuthorizationServerContext>().InstancePerHttpRequest();

            builder.Register(x => CreateCredentialAuthorizationResource()).As<ICredentialAuthorizationResource>();
            builder.RegisterType<WSTrustResourceOwnerCredentialValidation>().As<IResourceOwnerCredentialValidation>();

            builder.RegisterModule(new AutofacWebTypesModule());

            builder.RegisterControllers(typeof (AuthorizeController).Assembly);
            builder.RegisterControllers(typeof (AutofacConfig).Assembly);
            builder.RegisterApiControllers(typeof (TokenController).Assembly);
            builder.RegisterApiControllers(typeof (AutofacConfig).Assembly);

            var container = builder.Build();

            // MVC
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Web API
            var resolver = new AutofacWebApiDependencyResolver(container);
            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
        public static void Configure()
        {
            var builder = new ContainerBuilder();

            builder.RegisterType<EFStoredGrantManager>().As<IStoredGrantManager>();

            builder.RegisterType<DefaultAssertionGrantValidator>().As<IAssertionGrantValidation>();

            builder.RegisterType<EFAuthorizationServerConfiguration>().As<IAuthorizationServerConfiguration>();
            builder.RegisterType<EFAuthorizationServerAdministration>().As<IAuthorizationServerAdministration>();
            builder.RegisterType<EFAuthorizationServerAdministratorsService>().As<IAuthorizationServerAdministratorsService>();
            builder.RegisterType<AuthorizationServerContext>().InstancePerHttpRequest();

            builder.RegisterType<TokenService>().AsSelf();
            
            builder.RegisterModule(new ConfigurationSettingsReader("autofac"));

            builder.RegisterControllers(typeof(AuthorizeController).Assembly);
            builder.RegisterControllers(typeof(AutofacConfig).Assembly);
            builder.RegisterApiControllers(typeof(TokenController).Assembly);
            builder.RegisterApiControllers(typeof(AutofacConfig).Assembly);

            var container = builder.Build(); 
            
            // MVC
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Web API
            var resolver = new AutofacWebApiDependencyResolver(container);
            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
Example #6
0
        private static IContainer BuildAutoFacContainer()
        {
            var builder = new ContainerBuilder();

            //注册Controls
            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterControllers(new Assembly[] { Assembly.Load("YOYO.HRMS.Web.SystemManagement") });

            builder.RegisterType<PetaPocoDBFactory>().As<IDBFactory>().InstancePerHttpRequest();
            builder.RegisterType<PetaPocoUnitOfWork>().As<IUnitOfWork>();
            builder.RegisterType<NlogLogger>().As<ILogger>();

            builder.RegisterAssemblyTypes(typeof(LocalizedViewRepository).Assembly)
                .Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces();

            builder.RegisterAssemblyTypes(typeof(LocalizedViewService).Assembly)
                .Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces();

            var container = builder.Build();

            // register all your components with the container here
            // it is NOT necessary to register your controllers

            // e.g. container.RegisterType<ITestService, TestService>();
            //container.RegisterType<IDBFactory, PetaPocoDBFactory>(new HierarchicalLifetimeManager());
            //container.RegisterType<IUnitOfWork,PetaPocoUnitOfWork>();
            //container.RegisterType<IEmployeeRepository, EmployeeRepository>();
            //container.RegisterType<IEmployeeService, EmployeeService>();

            return container;
        }
        public static void AutoFacInit()
        {
            var builder = new ContainerBuilder();

            //注册DomainServices
            var services = Assembly.Load("AutofacMvcPluginDemo.Services");
            builder.RegisterAssemblyTypes(services, services)
              .Where(t => t.Name.EndsWith("Service"))
              .AsImplementedInterfaces().PropertiesAutowired();

            //实现插件Controllers注入
            var assemblies = new DirectoryInfo(
                     HttpContext.Current.Server.MapPath("~/Plugins/"))
               .GetFiles("*.dll")
               .Select(r => Assembly.LoadFrom(r.FullName)).ToArray();
            foreach (var assembly in assemblies)
            {
                builder.RegisterControllers(assembly).PropertiesAutowired().InstancePerRequest();
            }

            //注册主项目的Controllers
            builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();

            var container = builder.Build();

            var beginLifetimeScope = container.BeginLifetimeScope();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #8
0
        private void SetUpContainer()
        {
            var builder = new ContainerBuilder();
            builder.RegisterControllers(typeof(MvcApplication).Assembly);

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterModule(new AutofacWebTypesModule());
            RegisterCustomServices(builder);

            _container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));
        }
        public void OnApplicationStarting(UmbracoApplicationBase umbracoApplication,
            ApplicationContext applicationContext)
        {
            var viewPaths = new List<string>()
            {
                "~/Views/{0}.cshtml",
                "~/Views/{0}/{1}.cshtml",
                "~/Views/Shared/{0}.cshtml",
                "~/Views/Partials/{0}.cshtml",
                "~/Views/Region/{0}.cshtml",
                "~/Views/Widget/{0}.cshtml"
            };
            var catalog = new AggregateCatalog();

            var curentAssembly = new AssemblyCatalog(Assembly.GetExecutingAssembly());

            catalog.Catalogs.Add(curentAssembly);
            var builder = new ContainerBuilder();
            builder.Register(c => UmbracoContext.Current).AsSelf();
            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterApiControllers(typeof(UmbracoApplication).Assembly);

            foreach (var path in Directory.EnumerateDirectories(AppDomain.CurrentDomain.BaseDirectory + "\\Plugins", "*Widget*", SearchOption.TopDirectoryOnly))
            {
                catalog.Catalogs.Add(new DirectoryCatalog(path));
                var pluginName = path.Split('\\');
                viewPaths.Add(String.Format("~/Plugins/{0}/Views/{1}.cshtml", pluginName[pluginName.Length - 1], "{0}"));
                var pluginAssembly = Assembly.Load(pluginName[pluginName.Length - 1]);
                builder.RegisterControllers(pluginAssembly);
                
                //ToDo: Add routes to view engine for none umbraco ones (below errors with No Tempalte
                //RouteTable.Routes.MapRoute(pluginName[pluginName.Length - 1], "{controller}/{action}", new
                //{
                //    controller = pluginName[pluginName.Length - 1],
                //    action = "RenderWidget",
                //    id = UrlParameter.Optional
                //});
            }

            ViewEngines.Engines.Add(new UmbracoToolboxViewEngine(viewPaths.ToArray()));
            builder.RegisterComposablePartCatalog(catalog);

           
            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            var resolver = new AutofacWebApiDependencyResolver(container);
            GlobalConfiguration.Configuration.DependencyResolver = resolver;

            
        }
Example #10
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            var builder = new ContainerBuilder();
            builder.RegisterControllers(typeof(MvcApplication).Assembly);
            var container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
        }
Example #11
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly);
            builder.RegisterModelBinders(typeof(MvcApplication).Assembly);
            builder.RegisterModelBinderProvider();
            builder.RegisterModule(new RepositoryModule());

            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());
            builder.RegisterModule(new LoggingModule());
            builder.RegisterModule(new AutoMapperModule());
            //builder.RegisterModule(new RedisModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
            log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("~/Web.config")));
        }
Example #12
0
        private static void RegisterTypes(ContainerBuilder builder)
        {
            builder.RegisterControllers(typeof(IlaroAdmin).Assembly);

            builder.RegisterType<Notificator>().AsSelf().InstancePerLifetimeScope();

            builder.RegisterType<SystemClock>().As<IKnowTheTime>();
            builder.RegisterType<EntityService>().As<IEntityService>();
            builder.RegisterType<EntityValidator>().As<IValidatingEntities>();
            builder.RegisterType<FileValidator>().As<IValidatingFiles>();
            builder.RegisterType<ConfigurationProvider>().As<IConfigurationProvider>();
            builder.RegisterType<Core.Configuration>().As<IConfiguration>();
            builder.RegisterType<RecordsSource>().As<IFetchingRecords>();
            builder.RegisterType<RecordsHierarchySource>().As<IFetchingRecordsHierarchy>();
            builder.RegisterType<DbCommandExecutor>().As<IExecutingDbCommand>();
            builder.RegisterType<RecordsCreator>().As<ICreatingRecords>();
            builder.RegisterType<RecordsUpdater>().As<IUpdatingRecords>();
            builder.RegisterType<RecordsDeleter>().As<IDeletingRecords>();
            builder.RegisterType<RecordsComparer>().As<IComparingRecords>();
            builder.RegisterType<ChangesDescriber>().As<IDescribingChanges>();
            builder.RegisterType<HttpContextUserProvider>().As<IProvidingUser>();
            builder.RegisterType<FileNameCreator>().As<ICreatingNameFiles>();
            builder.RegisterType<FileDeleter>().As<IDeletingFiles>();
            builder.RegisterType<FileHandler>().As<IHandlingFiles>();
            builder.RegisterType<ImageResizer>().As<IResizingImages>();
            builder.RegisterType<FileSaver>().As<ISavingFiles>();
            builder.RegisterType<FilterFactory>().As<IFilterFactory>();
            builder.RegisterType<RecordsService>().As<IRecordsService>();

            builder.RegisterType<IlaroAdmin>().As<IIlaroAdmin>().SingleInstance();
        }
        public static void RegisterAutofac()
        {
            var builder = new ContainerBuilder();

            // Register your MVC controllers.
            builder.RegisterControllers(typeof(MvcApplication).Assembly);

            // OPTIONAL: Register model binders that require DI.
            builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
            builder.RegisterModelBinderProvider();

            // OPTIONAL: Register web abstractions like HttpContextBase.
            builder.RegisterModule<AutofacWebTypesModule>();

            // OPTIONAL: Enable property injection in view pages.
            builder.RegisterSource(new ViewRegistrationSource());

            // OPTIONAL: Enable property injection into action filters.
            builder.RegisterFilterProvider();

            // Register services
            RegisterServices(builder);

            // Set the dependency resolver to be Autofac.
            var container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            System.Web.Http.GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            //ModelBinders.Binders.DefaultBinder = new CustomModelBinder();

            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();


            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new RazorViewEngine());
        }
        public static void Setup()
        {
            var builder = new ContainerBuilder();
            builder.RegisterControllers(typeof(MvcApplication).Assembly);
            builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
            builder.RegisterModelBinderProvider();
            builder.RegisterModule<AutofacWebTypesModule>();
            builder.RegisterSource(new ViewRegistrationSource());
            builder.RegisterFilterProvider();
            builder.RegisterType<PremiumCalculationService>().As<IPremiumCalculationService>();
            builder.Register(context => new MapperConfiguration(configuration =>
            {
                configuration.AddProfile(new AutoMapperProfile());
            }))
               .AsSelf()
               .SingleInstance();

            builder.Register(context => context.Resolve<MapperConfiguration>()
                .CreateMapper(context.Resolve))
                .As<IMapper>()
                .InstancePerLifetimeScope();

            var container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #16
0
        private void configureIoC()
        {
            var builder = new ContainerBuilder();
            builder.RegisterControllers(typeof(MvcApplication).Assembly);

            builder.Register(ctx => LogManager.GetLogger("trace"))
                .As<Logger>()
                .InstancePerHttpRequest();

            builder.RegisterType<ProcessRunner>()
                .AsImplementedInterfaces()
                .InstancePerDependency()
                ;

            builder.RegisterType<DotProcessor>()
                .AsImplementedInterfaces()
                .SingleInstance()
                ;

            builder.RegisterType<Ansi2HtmlConverter>()
                .AsImplementedInterfaces()
                .InstancePerDependency()
                ;

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #17
0
        public static void Configure()
        {
            var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>().ToArray();
            var builder = new ContainerBuilder();

            builder.RegisterAssemblyTypes(assemblies)
                .Where(t => typeof(IStartable).IsAssignableFrom(t))
                .As<IStartable>()
                .SingleInstance();

            builder.RegisterAssemblyModules(assemblies);

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            var container = builder.Build();

            // Set the dependency resolver for Web API.
            var webApiResolver = new AutofacWebApiDependencyResolver(container);
            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

            // Set the dependency resolver for MVC.
            var mvcResolver = new AutofacDependencyResolver(container);
            DependencyResolver.SetResolver(mvcResolver);
        }
Example #18
0
        private static void RegisterTypes(ContainerBuilder builder)
        {
            string baseDirectory = HttpContext.Current.Server.MapPath("~/App_Data") + ConfigurationManager.AppSettings["dataFolderName"];

            builder.RegisterControllers(typeof(MvcApplication).Assembly);

            var repositoryAssemblies = Assembly.Load("FileRepository");
            builder.RegisterAssemblyTypes(repositoryAssemblies).AsImplementedInterfaces().WithParameter(new NamedParameter("path", baseDirectory));

            var serviceAssemblies = Assembly.Load("Services");
            builder.RegisterAssemblyTypes(serviceAssemblies).AsImplementedInterfaces();

            var configurationManagerWrapperAssembly = Assembly.Load("ConfigurationManagerWrapper");
            builder.RegisterAssemblyTypes(configurationManagerWrapperAssembly).AsImplementedInterfaces();

            var fileAssembly = Assembly.Load("SystemFileAdapter");
            builder.RegisterAssemblyTypes(fileAssembly).AsImplementedInterfaces();

            //builder.RegisterType<NLogLogger>().As<ILogger>();
            builder.Register(c => new NLogLogger()).As<ILogger>().InstancePerHttpRequest();
            builder.RegisterType<UserHub>();
            builder.RegisterType<TodoHub>();
            //            builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
            builder.RegisterFilterProvider();
        }
Example #19
0
        protected void BuildContainer()
        {
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly);

            // OPTIONAL: Register model binders that require DI.
            builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
            builder.RegisterModelBinderProvider();

            // OPTIONAL: Register web abstractions like HttpContextBase.
            builder.RegisterModule <AutofacWebTypesModule>();

            // OPTIONAL: Enable property injection in view pages.
            builder.RegisterSource(new ViewRegistrationSource());

            // OPTIONAL: Enable property injection into action filters.
            builder.RegisterFilterProvider();

            builder.RegisterAssemblyTypes(typeof(ChangeNameCommandHandler).Assembly).Where(x => x.Name.EndsWith("Handler")).AsImplementedInterfaces();

            RegisterMediatr(builder);

            // Set the dependency resolver to be Autofac.
            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #20
0
        public static void Register()
        {
            var cb = new Autofac.ContainerBuilder();

            cb.RegisterType <QuizDbContext>().InstancePerRequest();
            cb.RegisterType <Repo <Quiz> >().As <IRepo <Quiz> >().InstancePerRequest();
            cb.RegisterType <Repo <Question> >().As <IRepo <Question> >().InstancePerRequest();
            cb.RegisterType <Repo <Answer> >().As <IRepo <Answer> >().InstancePerRequest();
            cb.RegisterType <Repo <QuizCategory> >().As <IRepo <QuizCategory> >().InstancePerRequest();
            cb.RegisterType <Repo <QuizRating> >().As <IRepo <QuizRating> >().InstancePerRequest();
            cb.RegisterType <Repo <QuizResult> >().As <IRepo <QuizResult> >().InstancePerRequest();
            cb.RegisterType <Repo <ContactInfo> >().As <IRepo <ContactInfo> >().InstancePerRequest();
            cb.RegisterType <Repo <UserActivity> >().As <IRepo <UserActivity> >().InstancePerRequest();

            cb.RegisterType <QuizService>().As <IQuizService>().InstancePerRequest();
            cb.RegisterType <QuestionService>().As <IQuestionService>().InstancePerRequest();
            cb.RegisterType <AnswerService>().As <IAnswerService>().InstancePerRequest();
            cb.RegisterType <QuizCategoryService>().As <IQuizCategoryService>().InstancePerRequest();
            cb.RegisterType <QuizResultService>().As <IQuizResultService>().InstancePerRequest();
            cb.RegisterType <UserActivityService>().As <IUserActivityService>().InstancePerRequest();

            cb.RegisterType <ModelConverter>().InstancePerRequest();
            cb.RegisterType <ViewModelConverter>().InstancePerRequest();

            cb.RegisterControllers(typeof(MvcApplication).Assembly).InstancePerRequest();
            cb.RegisterType <AccountController>().InstancePerDependency();
            cb.RegisterAssemblyModules(typeof(MvcApplication).Assembly);

            var container = cb.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #21
0
        public static string _DefaultApiName = "O.AdminProApi"; //默认WebApi命名空间/项目名
        /// <summary>
        /// Web项目配置
        /// </summary>
        /// <param name="projectName">WebApi项目名(命名空间)</param>
        public static void Init(string projectName = "")
        {
            //默认项目名称
            projectName = string.IsNullOrEmpty(projectName) ? _DefaultName : projectName;

            //构造一个AutoFac的builder容器
            ContainerBuilder builder = new Autofac.ContainerBuilder();

            //第二步:告诉AutoFac控制器工厂,控制器类的创建去哪些程序集中查找(默认控制器工厂是去扫描bin目录下的所有程序集)
            Assembly controllerAss = Assembly.Load(projectName);

            builder.RegisterControllers(controllerAss);

            //加载业务逻辑层程序集。
            Assembly servicesAss = Assembly.Load("Services");

            Type[] stypes = servicesAss.GetTypes();
            builder.RegisterTypes(stypes).AsImplementedInterfaces(); //指明创建的stypes这个集合中所有类的对象实例,以其接口的形式保存

            //创建一个真正的AutoFac的工作容器
            var container = builder.Build();

            //将当前容器中的控制器工厂替换掉MVC默认的控制器工厂。
            //(即:不要MVC默认的控制器工厂了,用AutoFac容器中的控制器工厂替代)此处使用的是将AutoFac工作容器交给MVC底层 (需要using System.Web.Mvc;)
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
        public static void Configure()
        {
            var builder = new ContainerBuilder();

            builder.RegisterApiControllers(typeof(MvcApplication).Assembly).PropertiesAutowired().InstancePerHttpRequest();
            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired().InstancePerHttpRequest();

            builder.RegisterType<Logger>().As<ILogger>();
            builder.RegisterType<SimpleDataModificator>();
            builder.RegisterType<XmlDataModificator>();
            builder.RegisterType<Config>();

            var config = new Config(new Logger());

            switch (config.GetDataSource())
            {
                case DataSourse.DataBase:
                    builder.RegisterType<SimpleDataRepresentator>().As<IDataRepresentator>();
                    break;

                case DataSourse.Xml:
                    builder.RegisterType<XmlDataRepresentator>().As<IDataRepresentator>();
                    break;

                default:
                    throw new NotImplementedException();
            }

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
            GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        }
Example #23
0
    protected void Application_Start()
    {
        #region ApplicationStart

        ContainerBuilder builder = new ContainerBuilder();

        // Register your MVC controllers.
        builder.RegisterControllers(typeof(MvcApplication).Assembly);

        // Set the dependency resolver to be Autofac.
        IContainer container = builder.Build();

        BusConfiguration busConfiguration = new BusConfiguration();
        busConfiguration.EndpointName("Samples.MvcInjection.WebApplication");
        // ExistingLifetimeScope() ensures that IBus is added to the container as well,
        // allowing you to resolve IBus from your own components.
        busConfiguration.UseContainer<AutofacBuilder>(c => c.ExistingLifetimeScope(container));
        busConfiguration.UseSerialization<JsonSerializer>();
        busConfiguration.UsePersistence<InMemoryPersistence>();
        busConfiguration.EnableInstallers();

        bus = Bus.CreateSendOnly(busConfiguration);

        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);

        #endregion
    }
		private void RegisterContainer() {
			var builder = new ContainerBuilder();
			builder.RegisterControllers(Assembly.GetExecutingAssembly());
			_pluginServicee.Startup(builder);
			_container = builder.Build();
			DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));
		}
        public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder)
        {
            //webworkcontenxt 上下文注入
               builder.RegisterType<WebWorkContext>().As<IWorkContext>().InstancePerLifetimeScope();
               //bll 注入
               builder.RegisterType<CustomerService>().As<ICustomersService>().InstancePerLifetimeScope();
               //用户身份认证
               builder.RegisterType<AuthenticationService>().As<IAuthenticationService>().InstancePerHttpRequest();
               //验证码管理器
               builder.RegisterType<DefaultCaptchaManager>().As<ICaptchaManager>().SingleInstance();
               //缓存注册
               //builder.Register(c => new DefaultCacheService(new RuntimeMemoryCache(), 1.0f))
               //    .As<ICacheService>()
               //    .SingleInstance();
               //cachemanager注入

               //系统日志注入
               builder.RegisterType<Log4NetLoggerFactoryAdapter>().As<ILoggerFactoryAdapter>().SingleInstance();
               builder.RegisterType<CacheManagerFactoryAdapter>().As<ICacheManagerFactoryAdapter>().SingleInstance();
               //所有的controllers 注入
               builder.RegisterControllers(typeFinder.GetAssemblies().ToArray());

               //数据层注入

               var configstrategy = new ConfigStrategy();
               var RDBSConfigInfo = configstrategy.GetRDBSConfigInfo();
               builder.Register<IDbContext>(
               c => new ShepherdsFrameworkDbContext(RDBSConfigInfo.RDBSConnectionString))
               .InstancePerLifetimeScope();
               //泛型注入
               builder.RegisterGeneric(typeof(EFRepository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope();
        }
Example #26
0
        public static void RegistAll()
        {
            var iocBuilder = new Autofac.ContainerBuilder();

            iocBuilder.RegisterControllers(Assembly.GetExecutingAssembly());
            iocBuilder.RegisterApiControllers(Assembly.GetExecutingAssembly());
            //Type baseType = typeof(IH2FBase);
            var iInterfaces = Assembly.Load("H2F.TEST.Interface");
            var implement   = Assembly.Load("H2F.TEST.Implement");

            iocBuilder.RegisterAssemblyTypes(iInterfaces, implement).AsImplementedInterfaces();

            iocBuilder.RegisterType <Student>().As <IPerson>();
            iocBuilder.RegisterType <Worker>().Keyed <IPerson>(PersonType.Worker);

            iocBuilder.RegisterType <Student>().Keyed <IPerson>(PersonType.Student);


            iocBuilder.RegisterType <Log4net>().As <ILogger>();
            var config = GlobalConfiguration.Configuration;

            iocBuilder.RegisterWebApiFilterProvider(config);
            IContainer iocContainer = iocBuilder.Build();

            config.DependencyResolver = new AutofacWebApiDependencyResolver(iocContainer);
            System.Web.Mvc.DependencyResolver.SetResolver(new AutofacDependencyResolver(iocContainer));

            IocContainerManager.SetContanier(iocContainer);
        }
        protected void Application_Start()
        {
            Bootstrap.Log.Info("Application Start");

            Database.SetInitializer(new MigrateDatabaseToLatestVersion <BlochsTech.Website.Domain.Context.BlochsTechContext, BlochsTech.Website.Domain.Migrations.Configuration>());

            AreaRegistration.RegisterAllAreas();

            GlobalConfiguration.Configure(WebApiConfig.Register);

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();

            builder.RegisterModule(new DataAccessModule());
            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new DomainModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #28
0
        public void Configuration(IAppBuilder app)
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());


            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());

            var container = builder.Build();

            //DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Set the dependency resolver for MVC.
            var mvcResolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(mvcResolver);

            // Set the dependency resolver for Web API.
            var webApiResolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

            ApplicationContainer.Container = container;
        }
Example #29
0
        protected void Application_Start()
        {
            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());
            builder.RegisterModule(new AutofacWebTypesModule());
            builder.RegisterModule(new HelperModule());
            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            //Automapper
            AutoMapperConfiguration.Configure();

            log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("~/Web.config")));

            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //register BForms validation provider
            ModelValidatorProviders.Providers.Add(new BsModelValidatorProvider());
            BForms.Utilities.BsResourceManager.Register(Resources.Resources.ResourceManager);
        }
Example #30
0
        public void Configuration(IAppBuilder app)
        {
            var builder = new ContainerBuilder();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            var config     = GlobalConfiguration.Configuration;
            var assemblies = Directory.GetFiles(AppDomain.CurrentDomain.RelativeSearchPath, "*.dll").Select(Assembly.LoadFrom).ToArray();
            //注册所有实现了 IDependency 接口的类型
            var baseType = typeof(IDependency);

            builder.RegisterAssemblyTypes(assemblies)
            .Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract)
            .AsSelf().AsImplementedInterfaces()
            .InstancePerLifetimeScope();
            //注册MVC类型
            // builder.RegisterControllers(assemblies).PropertiesAutowired();
            //注册Api类型
            builder.RegisterApiControllers(assemblies);
            //builder.RegisterFilterProvider();
            builder.RegisterWebApiFilterProvider(config);
            var container = builder.Build();

            //注册api容器需要使用HttpConfiguration对象
            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
            //注册解析
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #31
0
        public static void Register(HttpConfiguration config)
        {
            // Create the container builder.
            var builder = new ContainerBuilder();

            // Register MVC 4 Contrrollers
            builder.RegisterControllers(Assembly.GetExecutingAssembly());

            // Register the Web API controllers.
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            //register Domain Depedencies
            builder.RegisterModule(new Domain.AutofacModule());

            // Build the container.
            var container = builder.Build();

            // SET Web API resolver
            // Create the depenedency resolver.
            var resolver = new AutofacWebApiDependencyResolver(container);
            // Configure Web API with the dependency resolver.
            config.DependencyResolver = resolver;

            //set MVC4 resolver
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
        private static void SetAutofacContainer(string dbConnectionString)
        {
            var builder = new ContainerBuilder();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterType<DefaultValidationBus>().As<IValidationBus>().InstancePerHttpRequest();
            builder.RegisterAssemblyTypes(Assembly.Load("Utilities")).AsImplementedInterfaces().InstancePerHttpRequest();

            builder.RegisterType<ScrabbleClubContext>().WithParameter("connectionStringName", dbConnectionString).InstancePerHttpRequest();

            var infrastructureDataAccessLayerAssembly = Assembly.Load("DataAccess");
            builder.RegisterAssemblyTypes(infrastructureDataAccessLayerAssembly)
                   .Where(t => t.Name.EndsWith("Repository"))
                   .AsImplementedInterfaces().InstancePerHttpRequest();

            var domainLayerAssembly = Assembly.Load("Domain");
            builder.RegisterAssemblyTypes(domainLayerAssembly)
                   .Where(t => t.Name.EndsWith("Service"))
                   .AsImplementedInterfaces()
                   .InstancePerHttpRequest();

            var applicationLayerAssembly = Assembly.Load("Application");
            builder.RegisterAssemblyTypes(applicationLayerAssembly)
                   .AsClosedTypesOf(typeof (IValidationHandler<>)).InstancePerHttpRequest();
            builder.RegisterAssemblyTypes(applicationLayerAssembly)
                   .Where(t => t.Name.EndsWith("Service"))
                   .AsImplementedInterfaces()
                   .InstancePerHttpRequest();

            builder.RegisterFilterProvider();
            IContainer container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #33
0
        public static void RegisterDependencies()
        {
            var builder = new ContainerBuilder();
            builder.RegisterControllers(typeof(MvcApplication).Assembly);

            builder.RegisterType<EntitiesContext>()
                .InstancePerHttpRequest();

            builder.RegisterGeneric(typeof(EntityRepository<>))
                .As(typeof(IEntityRepository<>))
                .InstancePerHttpRequest();

            builder.RegisterType<UserService>().As<IUserService>()
                .InstancePerHttpRequest();

            builder.RegisterType<AdminService>().As<IAdminService>()
                .InstancePerHttpRequest();

            builder.RegisterType<CatalogService>().As<ICatalogService>()
                .InstancePerHttpRequest();

            builder.RegisterType<CartService>().As<ICartService>()
                .InstancePerHttpRequest();

            var container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterApiControllers(typeof(WebApiApplication).Assembly);
            builder.RegisterControllers(typeof(WebApiApplication).Assembly);

            builder.RegisterModule<AutofacWebTypesModule>();

            builder.RegisterType<GroupService>().As<IGroupService>();
            builder.RegisterType<UserService>().As<IUserService>();
            builder.RegisterType<EventService>().As<IEventService>();
            builder.RegisterType<CommentService>().As<ICommentService>();
            builder.RegisterType<SearchService>().As<ISearchService>();

            builder.Register(s => new UserRepository(ConnectionString)).As<IUserRepository>();
            builder.Register(s => new GroupRepository(ConnectionString)).As<IGroupRepository>();
            builder.Register(s => new EventRepository(ConnectionString)).As<IEventRepository>();
            builder.Register(s => new CommentRepository(ConnectionString)).As<ICommentRepository>();
            builder.Register(s => new SearchRepository(ConnectionString)).As<ISearchRepository>();

            builder.RegisterType<RedisClient>().As<IRedisClient>()
                .UsingConstructor(typeof(string), typeof(int))
                   .WithParameters(new List<Parameter>
                                       {
                                           new TypedParameter(typeof (string), "127.0.0.1"),
                                           new TypedParameter(typeof (int), 6379)
                                       });
        }
Example #35
0
        public static IContainer RegisterDependencies()
        {
            #region Create the builder
            var builder = new ContainerBuilder();
            #endregion

            #region Register all controllers for the assembly
            builder.RegisterControllers(typeof(MvcApplication).Assembly);
            #endregion

            #region register infractusture
            builder.RegisterType<Logger>().As<ILogger>();
            #endregion

            #region register services
            builder.RegisterType<BasketService>().As<IBasketService<Product, Basket>>();
            #endregion

            //builder
            //  .RegisterType<PersonDbContext>()
            //  .AsImplementedInterfaces()
            //  .InstancePerLifetimeScope();

            //builder.Register<IRepository<Person>>(c => new PeopleRepository(new PersonDbContext(), new Logger()));

            return builder.Build();
        }
        public static void Initialize(Assembly webAssembly, IEnumerable<Assembly> relatedAssemblies)
        {
            var builder = new ContainerBuilder();

            // register all of autofac modules
            builder.RegisterAssemblyModules(relatedAssemblies.ToArray());

            // register all controllers
            builder.RegisterControllers(webAssembly);

            // register all web api controllers
            builder.RegisterApiControllers(webAssembly);

            // register all filters
            builder.RegisterFilterProvider();

            // build up the container
            var container = builder.Build();

            // register it to ASP.NET MVC
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Create the dependency resolver.
            var resolver = new AutofacWebApiDependencyResolver(container);

            // Configure Web API with the dependency resolver.
            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
        public void Register(ContainerBuilder builder, ITypeFinder typeFinder, NopConfig config)
        {



            builder.RegisterType<MovieService>().As<IMovieService>().InstancePerLifetimeScope();


            builder.RegisterControllers(typeFinder.GetAssemblies().ToArray());

            string conn = "Data Source=.;Initial Catalog=Axxe;Trusted_Connection=False;";

            builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope();

            var dataSettingsManager = new DataSettingsManager();
            var dataProviderSettings = dataSettingsManager.LoadSettings();
            builder.Register(c => dataSettingsManager.LoadSettings()).As<DataSettings>();
            builder.Register<IDbContext>(c => new NopObjectContext(conn)).InstancePerLifetimeScope();

            builder.Register(x => new EfDataProviderManager(x.Resolve<DataSettings>())).As<BaseDataProviderManager>().InstancePerDependency();
            var efDataProviderManager = new EfDataProviderManager(dataSettingsManager.LoadSettings());
            var dataProvider = efDataProviderManager.LoadDataProvider();
            dataProvider.InitConnectionFactory();

        }
Example #38
0
        public static void RegisterContainer()
        {
            // Create the container builder.
            var builder = new ContainerBuilder();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            builder.Register(db =>
            {
                var dbName = ConfigurationManager.AppSettings["dbName"];
                return new MongoClient().GetServer().GetDatabase(dbName);
            }).As<MongoDatabase>().InstancePerHttpRequest();

            builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)).InstancePerHttpRequest();

            builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
                .Where(t => t.Name.EndsWith("Service"))
                .AsSelf().InstancePerHttpRequest();

            // Build the container.
            var container = builder.Build();

            // Create the depenedency resolver.
            var resolver = new AutofacWebApiDependencyResolver(container);

            // Configure Web API with the dependency resolver.
            GlobalConfiguration.Configuration.DependencyResolver = resolver;

            // Configure MVC with the dependency resolver.
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
        public static void Configure()
        {
            var builder = new ContainerBuilder();
            builder.RegisterControllers(Assembly.GetExecutingAssembly());

            //register RavenDb DocumentStore
            builder.Register(x =>
            {
                var store = new DocumentStore { ConnectionStringName = "RavenDb" };
                store.Initialize();
                IndexCreation.CreateIndexes(Assembly.GetCallingAssembly(), store);
                return store;
            });

            //register RavenDb DocumentSession per Http request and SaveChanges on release of scope
            builder.Register(x => x.Resolve<DocumentStore>().OpenSession())
                .As<IDocumentSession>()
                .InstancePerHttpRequest();
                   //.OnRelease(x => { using (x) { x.SaveChanges(); } });

            builder.RegisterType<SupplierNameResolver>().InstancePerHttpRequest();
            builder.RegisterType<CategoryNameResolver>().InstancePerHttpRequest();

            var container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
        private static void SetIocContainer()
        {
            //Implement Autofac

            var configuration = GlobalConfiguration.Configuration;
            var builder = new ContainerBuilder();

            // Register MVC controllers using assembly scanning.
            builder.RegisterControllers(Assembly.GetExecutingAssembly());

            // Register MVC controller and API controller dependencies per request.
            builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerDependency();
            builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>().InstancePerLifetimeScope();

            // Register service
            builder.RegisterAssemblyTypes(typeof(ProfileService).Assembly)
            .Where(t => t.Name.EndsWith("Service"))
            .AsImplementedInterfaces().InstancePerDependency();

            // Register repository
            builder.RegisterAssemblyTypes(typeof(ProfileRepository).Assembly)
            .Where(t => t.Name.EndsWith("Repository"))
            .AsImplementedInterfaces().InstancePerDependency();

            var container = builder.Build();

            //for MVC Controller Set the dependency resolver implementation.
            var resolverMvc = new AutofacDependencyResolver(container);
            System.Web.Mvc.DependencyResolver.SetResolver(resolverMvc);
        }
        public void ConfigureAutofac(IAppBuilder app)
        {
            var builder = new ContainerBuilder();

            builder.RegisterType<ConfigurationProvider>()
                .As<IConfigurationProvider>();

            builder.RegisterType<TelemetryService>()
                .As<ITelemetryService>();

            builder.RegisterType<IotHubRepository>()
               .As<IIotHubRepository>();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            var container = builder.Build();

            //Setup Autofac dependency resolver for MVC
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            //Setup Autofac dependency resolver for WebAPI
            HttpConfiguration.DependencyResolver = new AutofacWebApiDependencyResolver(container);

            app.UseAutofacMiddleware(container);
            app.UseAutofacWebApi(HttpConfiguration);


        }
    protected void Application_Start()
    {
        #region ApplicationStart

        ContainerBuilder builder = new ContainerBuilder();

        // Register MVC controllers.
        builder.RegisterControllers(typeof(MvcApplication).Assembly);

        // Set the dependency resolver to be Autofac.
        IContainer container = builder.Build();

        EndpointConfiguration endpointConfiguration = new EndpointConfiguration("Samples.MvcInjection.WebApplication");
        // instruct NServiceBus to use a custom AutoFac configuration
        endpointConfiguration.UseContainer<AutofacBuilder>(c => c.ExistingLifetimeScope(container));
        endpointConfiguration.UseSerialization<JsonSerializer>();
        endpointConfiguration.UsePersistence<InMemoryPersistence>();
        endpointConfiguration.EnableInstallers();
        endpointConfiguration.SendFailedMessagesTo("error");

        endpoint = Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();

        ContainerBuilder updater = new ContainerBuilder();
        updater.RegisterInstance(endpoint);
        updater.Update(container);

        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);

        #endregion
    }
Example #43
0
        public static void Register()
        {
            //初始化AutoFac的相关功能

            /*
             * 1.0 告诉AutoFac初始化数据仓储层FB.CMS.Repository.dll中所有类的对象实例。这些对象实例以其接口的形式保存在AutoFac容器中
             * 2.0 告诉AutoFac初始化业务逻辑层FB.CMS.Services.dll中所有类的对象实例。这些对象实例以其接口的形式保存在AutoFac容器中
             * 3.0 将MVC默认的控制器工厂替换成AutoFac的工厂
             */

            //第一步: 构造一个AutoFac的builder容器
            ContainerBuilder builder = new Autofac.ContainerBuilder();

            //第二步:告诉AutoFac控制器工厂,控制器类的创建去哪些程序集中查找(默认控制器工厂是去扫描bin目录下的所有程序集)
            //2.1 从当前运行的bin目录下加载FB.CMS.MvcSite.dll程序集
            Assembly controllerAss = Assembly.Load("Qingke365.RollCall.WebApi");

            //2.2 告诉AutoFac控制器工厂,控制器的创建从controllerAss中查找(注意:RegisterControllers()方法是一个可变参数,如果你的控制器类的创建需要去多个程序集中查找的话,那么我们就再用Assembly controllerBss=Assembly.Load("需要的程序集名")加载需要的程序集,然后与controllerAss组成数组,然后将这个数组传递到RegisterControllers()方法中)
            builder.RegisterControllers(controllerAss);
            builder.RegisterApiControllers(controllerAss);



            //第三步:告诉AutoFac容器,创建项目中的指定类的对象实例,以接口的形式存储(其实就是创建数据仓储层与业务逻辑层这两个程序集中所有类的对象实例,然后以其接口的形式保存到AutoFac容器内存中,当然如果有需要也可以创建其他程序集的所有类的对象实例,这个只需要我们指定就可以了)

            //3.1 加载数据仓储层FB.CMS.Repository这个程序集。
            Assembly repositoryAss = Assembly.Load("Qingke365.RollCall.Dal");

            //3.2 反射扫描这个FB.CMS.Repository.dll程序集中所有的类,得到这个程序集中所有类的集合。
            Type[] rtypes = repositoryAss.GetTypes();
            //3.3 告诉AutoFac容器,创建rtypes这个集合中所有类的对象实例
            builder.RegisterTypes(rtypes)
            .AsImplementedInterfaces();     //指明创建的rtypes这个集合中所有类的对象实例,以其接口的形式保存

            //3.4 加载业务逻辑层FB.CMS.Services这个程序集。
            Assembly servicesAss = Assembly.Load("Qingke365.RollCall.Bll");

            //3.5 反射扫描这个FB.CMS.Services.dll程序集中所有的类,得到这个程序集中所有类的集合。
            Type[] stypes = servicesAss.GetTypes();
            //3.6 告诉AutoFac容器,创建stypes这个集合中所有类的对象实例
            builder.RegisterTypes(stypes)
            .AsImplementedInterfaces();     //指明创建的stypes这个集合中所有类的对象实例,以其接口的形式保存


            //第四步:创建一个真正的AutoFac的工作容器
            var container = builder.Build();


            //我们已经创建了指定程序集的所有类的对象实例,并以其接口的形式保存在AutoFac容器内存中了。那么我们怎么去拿它呢?
            //从AutoFac容器内部根据指定的接口获取其实现类的对象实例
            //假设我要拿到IsysFunctionServices这个接口的实现类的对象实例,怎么拿呢?
            //var obj = container.Resolve<IsysFunctionServices>(); //只有有特殊需求的时候可以通过这样的形式来拿。一般情况下没有必要这样来拿,因为AutoFac会自动工作(即:会自动去类的带参数的构造函数中找与容器中key一致的参数类型,并将对象注入到类中,其实就是将对象赋值给构造函数的参数)


            //第五步:将当前容器中的控制器工厂替换掉MVC默认的控制器工厂。(即:不要MVC默认的控制器工厂了,用AutoFac容器中的控制器工厂替代)此处使用的是将AutoFac工作容器交给MVC底层 (需要using System.Web.Mvc;)
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        }
Example #44
0
        public static void RegisterControllers(params Assembly[] assemblies)
        {
            builder.RegisterControllers(assemblies);
            builder.RegisterAssemblyTypes(typeof(IRepository).Assembly)
            .Where(t => t.Name.EndsWith("Repository"))
            .AsImplementedInterfaces().InstancePerLifetimeScope();

            container = builder.Build();
        }
Example #45
0
        protected void Application_Start(object sender, EventArgs e)
        {
            System.Web.Mvc.AreaRegistration.RegisterAllAreas();
            //mvc相关
            System.Web.Routing.RouteTable.Routes.MapRoute("l2",
                                                          "{controller}/{action}",
                                                          defaults: new { controller = "Home", action = "Index" });

            //ioc和aop相关
            Type flagIScoped    = typeof(IScoped);
            Type flagISingleton = typeof(ISingleton);
            Type flagITransient = typeof(ITransient);
            //bin目录下的所有的类型
            var lstType = System.Web.Compilation.BuildManager.GetReferencedAssemblies()
                          .Cast <System.Reflection.Assembly>()
                          .SelectMany(x => x.GetTypes())
                          .ToList();
            var lstTypeIScoped = lstType.Where(x => flagIScoped.IsAssignableFrom(x))
                                 .Where(x => x != flagIScoped).ToArray();
            var lstTypeISingleton = lstType.Where(x => flagISingleton.IsAssignableFrom(x))
                                    .Where(x => x != flagISingleton).ToArray();
            var lstTypeITransient = lstType.Where(x => flagITransient.IsAssignableFrom(x))
                                    .Where(x => x != flagITransient).ToArray();

            var builder = new Autofac.ContainerBuilder();

            builder.RegisterTypes(lstTypeIScoped).AsSelf().AsImplementedInterfaces()
            .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
            .InstancePerRequest();
            builder.RegisterTypes(lstTypeISingleton).AsSelf().AsImplementedInterfaces()
            .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
            .SingleInstance();
            builder.RegisterTypes(lstTypeITransient).AsSelf().AsImplementedInterfaces()
            .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
            .InstancePerDependency();

            builder.RegisterGeneric(typeof(Azeroth.Util.Log <>))
            .As(typeof(Azeroth.Util.ILog <>))
            .SingleInstance();

            builder.RegisterControllers(System.Reflection.Assembly.GetExecutingAssembly())
            .AsSelf()
            .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
            .InstancePerRequest()
            .EnableClassInterceptors()
            .InterceptedBy(typeof(App_Start.InterceptedHandler));
            var container = builder.Build();
            var resolver  = new Autofac.Integration.Mvc.AutofacDependencyResolver(container);

            System.Web.Mvc.DependencyResolver.SetResolver(resolver);
            //日志信息相关的处理
            this.LogConfigure(new Bll.Log(new Model.Entity.DbContext()));
        }
Example #46
0
        public static void ConfigureContainer()
        {
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired(); // mvc controller
            builder.RegisterModule <AutofacWebTypesModule>();
            builder.RegisterModule(new ServiceModule());                                        // Moduel
            //builder.RegisterType<MvcAuthorizeAttribute>().SingleInstance();//先实例化
            //builder.RegisterFilterProvider(); // 标签过滤器filter
            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); // mvc
        }
Example #47
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();

            builder.RegisterModule(new RepositoryModule());
            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            //using (var ctx = new Pm3Entities())
            //{
            //    // create and seed the db
            //    //ctx.Database.Initialize(true);

            //    //// load elements to use AccidentCodeService
            //    //var dbf = new DbFactory();
            //    //var acr = new AccidentCodeRepository(dbf);
            //    //var ui = new UnitOfWork(dbf);
            //    //var acs = new AccidentCodeService(acr, ui);

            //    //// add a code to our table
            //    //if (acs.GetAccidentCode("E") == null)
            //    //{
            //    //    var ac = new AccidentCode
            //    //    {
            //    //        AccidentCodeId = "E",
            //    //        Description = "E description"
            //    //    };
            //    //    acs.CreateAccidentCode(ac);
            //    //    acs.SaveAccidentCode();
            //    //}
            //    //else
            //    //{
            //    //    AccidentCode accidentCode = acs.GetAccidentCode("E");
            //    //    accidentCode.Description = "Some Other New description for E";
            //    //    acs.Update(accidentCode);
            //    //    acs.SaveAccidentCode();
            //    //}
            //}
        }
Example #48
0
        public static void Register()
        {
            //第一步:初始化AutoFac的相关功能
            ContainerBuilder builder = new Autofac.ContainerBuilder();

            //第二步:告诉AutoFac控制器工厂,控制器类的创建去哪些程序集中查找(默认控制器工厂是去扫描bin目录下的所有程序集)
            //2.1 从当前运行的bin目录下加载FB.CMS.MvcSite.dll程序集
            Assembly controllerAss = Assembly.Load("WebApplication1");

            //2.2 告诉AutoFac控制器工厂,控制器的创建从controllerAss中查找(注意:RegisterControllers()方法是一个可变参数,如果你的控制器类的创建需要去多个程序集中查找的话,那么我们就再用Assembly controllerBss=Assembly.Load("需要的程序集名")加载需要的程序集,然后与controllerAss组成数组,然后将这个数组传递到RegisterControllers()方法中)
            builder.RegisterControllers(controllerAss);

            //或者//builder.RegisterControllers(Assembly.GetExecutingAssembly());

            //第三步:告诉AutoFac容器,创建项目中的指定类的对象实例,以接口的形式存储(其实就是创建数据仓储层与业务逻辑层这两个程序集中所有类的对象实例,然后以其接口的形式保存到AutoFac容器内存中,当然如果有需要也可以创建其他程序集的所有类的对象实例,这个只需要我们指定就可以了)
            //3.1 加载数据仓储层WebApplication1这个程序集。
            Assembly repositoryAss = Assembly.Load("ZM.CMS.Repository");

            //3.2 反射扫描这个FB.CMS.Repository.dll程序集中所有的类,得到这个程序集中所有类的集合。
            Type[] rtypes = repositoryAss.GetTypes();
            //3.3 告诉AutoFac容器,创建rtypes这个集合中所有类的对象实例
            builder.RegisterTypes(rtypes)
            .AsImplementedInterfaces();     //指明创建的rtypes这个集合中所有类的对象实例,以其接口的形式保存

            //3.4 加载业务逻辑层FB.CMS.Services这个程序集。
            Assembly servicesAss = Assembly.Load("ZM.CMS.Services");

            //3.5 反射扫描这个FB.CMS.Services.dll程序集中所有的类,得到这个程序集中所有类的集合。
            Type[] stypes = servicesAss.GetTypes();
            //3.6 告诉AutoFac容器,创建stypes这个集合中所有类的对象实例
            builder.RegisterTypes(stypes)
            .AsImplementedInterfaces();     //指明创建的stypes这个集合中所有类的对象实例,以其接口的形式保存

            //第四步:创建一个真正的AutoFac的工作容器
            var container = builder.Build();

            //第五步:将当前容器中的控制器工厂替换掉MVC默认的控制器工厂。(即:不要MVC默认的控制器工厂了,用AutoFac容器中的控制器工厂替代)此处使用的是将AutoFac工作容器交给MVC底层 (需要using System.Web.Mvc;)
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            //我们知道控制器的创建是调用MVC默认的控制器工厂,默认的控制器工厂是调用控制器类的无参构造函数
            //可是我们如果要使用AutoFac自动工厂,将对象通过构造函数注入类中,那么这个构造函数就需要带参数
            //如果我们将控制器的无参构造函数删除,保留带参数的构造函数,MVC默认的控制器工厂来创建控制的时候
            //就会去调用无参的构造函数,可是这时候发现没有无参的构造函数于是就报“没有为该对象定义无参数的构造函数”错误
            //既然报错,那我们如果保留无参的构造函数,同时在声明一个带参数的构造函数是否可行呢?
            //答案;行是行,但是创建控制器的时候,MVC默认的控制器工厂调用的是无参构造函数,它并不会去调用有参的构造函数
            //这时候,我们就只能将AutoFac它的控制器工厂替换调用MVC默认的控制器工厂(控制器由AutoFac的控制器工厂来创建)
            //而AutoFac控制器工厂在创建控制的时候只会扫描带参数的构造函数,并将对象注入到带参数的构造函数中
            //AutofacDependencyResolver这个控制器工厂是继承了 IDependencyResolver接口的,而IDependencyResolver接口是MVC的东西
            //MVC默认的控制器工厂名字叫:DefaultControllerFactory
            //具体参考:http://www.cnblogs.com/artech/archive/2012/04/01/controller-activation-032.html
        }
Example #49
0
        protected void Application_Start()
        {
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
            builder.RegisterModule(new RepositoryModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
Example #50
0
        /// <summary>
        /// Creates a root container loading dependencies from the specified assemblies.
        /// </summary>
        public static IContainer Create(IEnumerable <Assembly> assemblies)
        {
            var asm = typeof(Factory).Assembly;

            if (!assemblies.Contains(asm))
            {
                assemblies = assemblies.Concat(new Assembly[] { asm });
            }
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterDependencyAssemblies(assemblies);
            builder.RegisterControllers(assemblies.ToArray());

            return(CreateFromScope(builder.Build()));
        }
Example #51
0
        private void AutoFacConfiguration()
        {
            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();

            builder.RegisterModule(new RepositoryModule());
            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #52
0
        protected void Application_Start()
        {
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(HomeController).Assembly);
            builder.Register(_ => LogManager.GetLogger("ControllersLogger")).As <ILogger>();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(builder.Build()));

            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            logger.Info("Application_Start");
        }
Example #53
0
        protected override void Load(Autofac.ContainerBuilder builder)
        {
            // Register MVC controllers using assembly scanning.
            builder.RegisterControllers(System.Reflection.Assembly.GetExecutingAssembly());

            // Dependency injection module that registers abstractions for common web application properties.
            // Ref: http://autofac.org/apidoc/html/DA6737B.htm
            builder.RegisterModule(new AutofacWebTypesModule());
            builder.RegisterFilterProvider();

            //Injecting the Redis client service
            builder.RegisterType <NewtonsoftSerializer>().As <ISerializer>().SingleInstance();
            builder.RegisterType <StackExchangeRedisCacheClient>().As <ICacheClient>().SingleInstance();

            builder.Register(c => CacheProviderManager.Default).As <ICacheProvider>().SingleInstance();
        }
Example #54
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var builder = new Autofac.ContainerBuilder();

            builder.RegisterType <BizService>().As <IBizService>().InstancePerLifetimeScope();
            builder.RegisterControllers(System.Reflection.Assembly.GetExecutingAssembly());
            var container = builder.Build();

            //var rsv = new DependencyResolver();

            DependencyResolver.SetResolver(new Autofac.Integration.Mvc.AutofacDependencyResolver(container));
        }
Example #55
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
            builder.RegisterModule(new ServicesModule());
            builder.RegisterModule(new DataModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
        protected void Application_Start()
        {
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());

            builder.RegisterType <Service>().As <IService>();
            builder.RegisterType <MailService>().As <IMailService>();
            builder.RegisterType <ProductRepo>().As <IProduct>();

            IContainer container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
Example #57
0
        public static void RegisterModule()
        {
            Log.Logger = new LoggerConfiguration()
                         .ReadFrom.AppSettings()
                         .CreateLogger();

            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();

            builder.RegisterModule(new LoggerModule());
            builder.RegisterModule(new ServiceModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #58
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            //Database.SetInitializer<EasyLearningDB>(new DbInitializer());
        }
        public static void Register()
        {
            ContainerBuilder builder       = new Autofac.ContainerBuilder();
            Assembly         controllerAss = Assembly.Load("LocateProject");

            builder.RegisterControllers(controllerAss);
            //Assembly repositoryAss = Assembly.Load("ILP_DAL");//接口层
            //Type[] rtypes = repositoryAss.GetTypes();
            //builder.RegisterTypes(rtypes)
            //    .AsImplementedInterfaces();
            Assembly servicesAss = Assembly.Load("LP_DAL");

            Type[] stypes = servicesAss.GetTypes();
            builder.RegisterTypes(stypes)
            .AsImplementedInterfaces();
            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
Example #60
0
        public static void Configure()
        {
            // create ContainerBuilder
            var builder = new Autofac.ContainerBuilder();

            // Register MVC controllers. (MvcApplication is the name of the class in Global.asax.)
            builder.RegisterControllers(typeof(MvcApplication).Assembly)
            .Where(c => c.Name.EndsWith("Controller"));

            // register Common DIModule
            builder.RegisterModule <Project.Common.DIModule>();
            // register Service DIModule
            builder.RegisterModule <Project.Service.DIModule>();

            var container = builder.Build();

            // set the dependency resolver for MVC controllers to use AutofacDependencyResolver
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }