Autofac

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

猜你喜欢

转载自www.cnblogs.com/chenyishi/p/9157064.html