1.添加nuget包autofac,如果web项目为mvc的,还需要一个autofac.mvc包
2.创建一个autofac注入类:AutoFacConfig,名字按自己的命名习惯起即可:
public class AutoFacConfig
{
public static void Register()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetCallingAssembly());//注册mvc的Controller
//注入BLL,UI中使用
builder.RegisterAssemblyTypes(Assembly.Load("Gdky.TJ.Bll"))
.AsImplementedInterfaces() //是以接口方式进行注入
.InstancePerRequest(); //每次http请求
//注入DAL,BLL层中使用
builder.RegisterAssemblyTypes(Assembly.Load("Gdky.TJ.Dal")).AsImplementedInterfaces()
.InstancePerRequest();
//Cache的注入,使用单例模式
//builder.RegisterType<RedisCacheManager>()
// .As<ICacheManager>()
// .SingleInstance()
// .PropertiesAutowired();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}
这种注入方式,需要bll层生成的dll文件在web项目的bin目录下。
3.在全局Global.asax中配置一下,使其在项目启动的时候完成注入
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AutoFacConfig.Register();//autofac:控制反转,依赖注入配置
}
}