asp.net Core依赖注入

  

    依赖注入的简单了解可通过-->依赖注入

  asp.netcore可通过StartUp.cs文件实现依赖注入。

    从.netcore入口讲起,Program是程序的入口,通过CreateDefaultBuilder方法创建了WebHost,程序启动后进入StartUp。此类包含ConfigureServices方法和
Configure。ConfigureServices最先运行,它包含IServiceCollection的参数。此方法有Add开头的扩展方法,创建Web程序的都会有一个叫AddMVC的扩展方法,此扩展方法是把MVC添加到服务容器(IServiceProvider)中。依赖注入的扩展包含如下: 
   public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton<IPusher<WebSocket>,WebSocketPusher>();
        //    services.AddTransient()
        //    services.AddScoped()
            }

首先我们先说一下AddSingleton。Singleton词意看出是单例的。只能实例出一次对象。Scoped是一个请求一个实例,Transient每次使用都是一个新实例。这三个方法都是同一件事,只不过生命周期不同。

介绍完注册依赖后进行使用。依赖注入有三种注入的方式,分别是构造函数注入,属性注入,方法注入。asp.netcore默认为我们使用了构造函数注入,也是我经常使用的注入方式。

下面是在MVC 控制器中的实现

  public class DemoControler
    {
        private IPusher<WebSocket>_Interface{ get; set; }
        public Demo(IPusher<WebSocket> pusher) {
            _Interface= pusher;
        }
    }

 

 也可以在View当中实现。需使用Razor的@inject

@inject IPusher<WebSocket> pusher

@pusher.GetXX();

以上是Asp.NetCore当中为我们默认实现的依赖注入。弊端就是比如我要注入多个对象还需要一个个的在StartUp类中添加,这岂不是太乱了吗?下次说一下Core下的AutoFac的实现

 

 

 

posted @ 2018-04-16 17:31  Lah98  阅读(254)  评论(0编辑  收藏  举报