zoukankan      html  css  js  c++  java
  • MVC autofac 属性注入

    Global文件

    public class MvcApplication : System.Web.HttpApplication
        {
            private static IContainer Container { get; set; }
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
    
                var builder = new ContainerBuilder();
                //根据名称约定(服务层的接口和实现均以Contract结尾),实现服务接口和服务实现的依赖
                builder.RegisterAssemblyTypes(Assembly.Load("BLOG.IBLL"), Assembly.Load("BLOG.BLL")).Where(t => t.Name.EndsWith("Contract")).AsImplementedInterfaces().PropertiesAutowired().InstancePerDependency();
                // 根据名称约定(数据访问层的接口和实现均以Repository结尾),实现数据访问接口和数据访问实现的依赖
                builder.RegisterAssemblyTypes(Assembly.Load("BLOG.IDAL"), Assembly.Load("BLOG.DAL")).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces().PropertiesAutowired().InstancePerDependency();
                builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
                Container = builder.Build();
                DependencyResolver.SetResolver(new AutofacDependencyResolver(Container));
            }
        }

    控制器

    public class DefaultController : Controller
        {
            //属性自动注入
            public IProvinceContract ProvinceContract { get; set; }
            // GET: Default
            public ActionResult Index()
            {
                return View();
            }
            public ActionResult GetProvinceList()
            {
                var list = ProvinceContract.GetList(p => p.Id > 0);
                return Json(list);
            }
        }
    PropertiesAutowired 属性注入

    IBLL

    public interface IProvinceContract
        {
            /// <summary>
            /// 获取列表
            /// </summary>
            /// <param name="where"></param>
            /// <returns></returns>
            IQueryable<Province> GetList(Expression<Func<Province, bool>> where);
        }

    BLL

     public class ProvinceContrator: IProvinceContract
        {
            //属性自动注入
            public IProvinceRepository ProvinceRepository { get; set; }
            public IQueryable<Province> GetList(Expression<Func<Province, bool>> where)
            {
                return ProvinceRepository.GetList(where);
            }
        }
  • 相关阅读:
    构架设计:负载均衡层设计方案(1)——负载场景和解决方式
    ActiveMQ5.14.1+Zookeeper3.4.9高可用伪分布式部署
    TCP同步与异步,长连接与短连接【转载】
    各种加密解密算法的比较和适用场合(转)
    ElasticSearch安装部署,基本配置(Ubuntu14.04)
    OpenResty--mysql,redis 项目中的应用
    mysql慢日志
    MongoDB之Replica Set(复制集复制)
    pycharm的一些设置和快捷键
    jmap
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/10783151.html
Copyright © 2011-2022 走看看