zoukankan      html  css  js  c++  java
  • 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;
            }
  • 相关阅读:
    [置顶] java得到前一个月的年月日时分秒
    Windows 8.1 Preview的新功能和新API
    oracle保证读一致性原理
    10161
    Qt国际化
    使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包
    Haxe2.10到Haxe3,NME到OpenFL的迁移备忘
    设置RichEdit相关颜色说明
    使用MFC CImage类绘制PNG图片时遇到的问题
    把网球计分招式重构到状态模式
  • 原文地址:https://www.cnblogs.com/chenyishi/p/9157064.html
Copyright © 2011-2022 走看看