.netCore下的依赖注入扩展 -- AutoFac

 

使用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>();
       } }

 

posted @ 2018-04-24 21:26  Lah98  阅读(408)  评论(1编辑  收藏  举报