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;
            }
  • 相关阅读:
    获取桌面路径
    Winform判断一个窗口是否以模态化方式打开
    Winform弹出子窗体
    Winform 窗体传值 利用委托 子窗体传值给父窗体
    GridView中小的应用
    GridView显示水平滚动条
    GridView中常用属性的设置
    将DevExpress GridView中的数据原样导出到Excel中
    DevExpress 16.2如何汉化
    C#使用NPOI导出Excel
  • 原文地址:https://www.cnblogs.com/chenyishi/p/9157064.html
Copyright © 2011-2022 走看看