使用AutoFac实现依赖注入我们需要引用一下两个Nuget包
接下来就是我们替换Asp.netCore默认为我们实现的依赖注入功能了。如果对core默认实现不清楚的朋友可以点此连接查看
使用构造函数注入
看下代码:
public interface IUser { string GetName(); }
public class User : IUser { public string GetName() { return "User1"; } }
User是要注入的对象。接下来是修改StartUp类中ConfigureServices方法
public void ConfigureServices(IServiceCollection services) { }
我们把Void返回值替换成IServiceProvider。
public IServiceProvider ConfigureServices(IServiceCollection services) { var containerBuilder= new ContainerBuilder(); containerBuilder.RegisterType<User>().As <IUser>(); containerBuilder.Populate(services); var container = containerBuilder.Build(); return new AutofacServiceProvider(container); }
我们配置好StatUp类接下来就是使用注入的User对象了。在此我使用MVC里的Controller演示
public class HomeController : Controller { public IUser _user { get; set; } public HomeController(IUser user) { _user = user; } public IActionResult Index() { _user.GetName(); return View(); } }
就这样我们完成了AutoFac的构造函数注入。AutoFac不仅仅有RegisterType注入方式,比如可以通过模块化的方式注入
StartUp中ConfigureServices方法:
containerBuilder.RegisterModule<AspCoreMVCIdentityDemo.AutoFac.AutoFacModule>();
public class AutoFacModule:Module { protected override void Load(ContainerBuilder builder) { builder.RegisterType<User>().As<IUser>();
} }