码迷,mamicode.com
首页 > 其他好文 > 详细

Autofac

时间:2018-06-08 19:32:27      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:dep   global   conf   获取   相同   contain   str   uil   register   

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

            // 注册所有的Controller
            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            //// RegisterType方式:
            //builder.RegisterType<UserService>().As<IService>().InstancePerRequest();
            //// Register方式:
            //builder.Register(c => new UserService()).AsSelf().InstancePerDependency();

            var IServices = Assembly.Load("BLL");
            var IRepository = Assembly.Load("DAL");
            //根据名称约定(服务层的接口和实现均以Service结尾),实现服务接口和服务实现的依赖
            builder.RegisterAssemblyTypes(IServices, IServices).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces().InstancePerRequest();
            builder.RegisterAssemblyTypes(IRepository, IRepository).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces();
            
            // 把容器装入到微软默认的依赖注入容器中
            var container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }

BLL

 

    public interface IService
    {
        string Test();
    }
  public class UserService:IService
    {
        private IRepository repository;
        public UserService(IRepository repository)
        {
            this.repository = repository;
        }

        public string Test()
        {
            return this.repository.GetUser();
        }
    }

DAL

    public interface IRepository
    {
        string GetUser();
    }
    public class UserRepository:IRepository
    {
        public string GetUser()
        {
            return "获取到了用户";
        }
    }

Controller

        private readonly IService _testService;

        public TestController(IService testService, IService testServiceA)
        {
            if (testService == testServiceA)//判断不同生命周期注入的对象是否相同
            {
            }
            _testService = testService;
        }

 

Autofac

标签:dep   global   conf   获取   相同   contain   str   uil   register   

原文地址:https://www.cnblogs.com/chenyishi/p/9157064.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!