Exemplo n.º 1
0
        public static void AutofacMvcRegister()
        {
            ContainerBuilder builder = new ContainerBuilder();

            builder.RegisterGeneric(typeof(Repository <,>)).As(typeof(IRepository <,>));
            Type baseType = typeof(IDependency);

            Assembly[] assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies()
                                    .Select(Assembly.Load).ToArray();
            assemblies = assemblies.Union(new[] { Assembly.GetExecutingAssembly() }).ToArray();
            builder.RegisterAssemblyTypes(assemblies)
            .Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract)
            .AsImplementedInterfaces().InstancePerLifetimeScope();    //InstancePerLifetimeScope 保证生命周期基于请求

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterFilterProvider();
            IContainer container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
            ContractHelper.SetContainer(container);
        }