控制反转(IOC)依赖注入(DI)一直没怎么使用过,最近觉得学习下,AutoFac应该是其中性能比较好的一款IOC容器了。
所以觉得学习下AutoFac的使用
1.AutoFac的基本使用
创建一个MVC项目,通过Nuget直接添加Autofac。
例子:
定义一接口
public interface Itest
{
string msg();
}
实现此接口
方法a
public class testa : Itest
{
public testa()
{
}
public string msg()
{
return "a";
}
}
方法b
public class testb : Itest
{
public testb()
{
}
public string msg()
{
return "b";
}
}
在Global.asax中加入依赖注入的注册代码
ContainerBuilder builder = new ContainerBuilder();创建autofac管理注册类的容器实例
builder.RegisterControllers(Assembly.GetExecutingAssembly());//使用Autofac提供的RegisterControllers扩展方法来对程序集中所有的Controller一次性的完成注册
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).AsImplementedInterfaces();//注册所有类
builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();//注册属性注入
//注册Itest
builder.RegisterType<testa>().As<Itest>().AsImplementedInterfaces()
; .PropertiesAutowired().InstancePerLifetimeScope();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));//下面就是使用MVC的扩展 更改了MVC中的注入方式
实现 通过属性注入的方式
public class HomeController : Controller
{
public Itest test{ get; set; }
public ActionResult Index()
{
string str = test.msg();
return view()
}
}