zoukankan      html  css  js  c++  java
  • Autofac手动注入及自动注入示例

    参考:http://www.cnblogs.com/xinchuang/archive/2013/05/07/3065433.html#2911661

    一、环境

       vs2012、mvc4、.Net Framework4.5

    二、过程

      1、新建项目,ASP.NET MVC 4 Web应用程序,确定,Internet应用程序,确定

      2、工具,库程序包管理器,管理解决方案的NuGet程序包

      3、选择联机,右上角输入autofac搜索

      4、安装Autofac和Autofac Integration mvc4

      5、建立业务实体项目,解决方案右键,添加,新建项目,类库,Core

      6、项目Core里面建立年级类 Grade ,设为public ,添加属性 Name    public string Name{get;set;}  (C#自动属性)

      7、建立业务逻辑项目,解决方案右键,添加,新建项目,类库,Services

      8、项目Services要引用项目Core,用到实体Grade。

      8、项目Services里面建立接口IGradeService,设为public,添加方法GetAllGrade(),  IList<Grade> GetAddGrade();  看最后代码

      9、项目Services里面建立类GradeService,继承接口IGradeService,实现方法GetAllGrade()  ,看最后代码

      10、主项目MvcApplication1引用项目Services和项目Core。

      11、修改HomeController里面Index方法,改为如下,注意引用

             

     private IGradeService _gradeService;
          
            public HomeController(IGradeService gradeService)
            {
                _gradeService = gradeService;
            }
    
            public ActionResult Index()
            {
                var model = _gradeService.GetAllGrade().ToList();
    
                return View(model);
            }

      12、修改页面Index.cshtml ,添加如下代码

    @using Core;
    @model List< Grade>
    
    @{
        ViewBag.Title = "Home Page";
    }
    
    @foreach (var item in Model)
    {
    
        @item.Name <br />
       
    }

       13、修改Global.asax,在Application_Start()方法里面添加如下代码,注意引用Autofac、Autofac.Integration.Mvc以及别的引用

        

    //依赖注入
    var builder = new ContainerBuilder();
    builder.RegisterType<GradeService>().As<IGradeService>().InstancePerHttpRequest();

    builder.RegisterControllers(Assembly.GetExecutingAssembly());
    builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
    .AsImplementedInterfaces();
    var container = builder.Build();
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

    
    

     注意:DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 这个必须放在builder.RegisterControllers(Assembly.GetExecutingAssembly());的后面,不然会出现错误:没有为该对象定义无参数的构造函数。

     14、运行

    三、关于Autofac自动注入模式 参考:http://www.cnblogs.com/n-pei/archive/2013/01/24/2875674.html   注意:接口要继承IDependency。他的代码:http://pan.baidu.com/s/1sjwb7Z3

    四、代码:http://pan.baidu.com/s/1ntE0Acp

  • 相关阅读:
    第二节:简单工厂模式(静态工厂模式)
    第一节:不使用设计模式的传统方式
    第三章:设计模式概述
    第二节:类与类之间的关系
    高斯混合模型(GMM)
    随机森林
    LDA主题模型
    Adaboost算法
    线性代数
    k-means聚类
  • 原文地址:https://www.cnblogs.com/heifengwll/p/3653309.html
Copyright © 2011-2022 走看看