autofac的使用解析

1:需要添加指定的程序集

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
//注意在Application 中就是执行管道事件之前我们需要首先实例化接口对象 
namespace itcast.crm17.Site.App_Start
{
    using itcast.crm17.common;
    using Autofac;
    using Autofac.Integration.Mvc; //重写了控制器工厂类,特点扫描有参数的构造函数,再根据此构造函数创建控制器类的对象实例
    using System.Reflection;
    using System.Web.Mvc;
 
    public class AutoFacConfig
    {
        public static void Register()
        {
            //TODO:使用autofanc实现的工厂替换MVC底层默认控制器工厂
            //TODO:还用autofac将所有的接口初始化
 
            //1.0 实例化autofac的容器创建者的对象
            var bulider = new ContainerBuilder();
 
             //Load:表示的是我们需要实例化其接口对象的程序集名称(命名空间)
            bulider.RegisterTypes(Assembly.Load("itcast.crm17.Repository").GetTypes()).AsImplementedInterfaces() ;
            bulider.RegisterTypes(Assembly.Load("itcast.crm17.Services").GetTypes()).AsImplementedInterfaces();
            //4.0 告诉autofac将来创建控制器类对象的程序集名称为什么
            Assembly ass = Assembly.Load("itcast.crm17.Site");
            bulider.RegisterControllers(ass);
 
            //5.0 告诉auto发出容器创建者创建一个auto的正真容器对象
            var container = bulider.Build();
 
            //6:将当前的autofac容器对象追加进全局缓存中 用于我们创建接口实例对象的时候可以拿出来
            CacheMgr.SetData(Keys.autofaccontainer, container);
 
            //6.0 告诉MVC将DefaultControllerFactory替换成autofac中的控制器创建工厂
            //将来所有的接口使用container去进行传递
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
    }
}

posted on 2015-05-10 17:56  阿兴的平凡世界  阅读(431)  评论(0)    收藏  举报

导航