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:控制反轉,依賴注入配置
}
}