节选自这里

ConfigureServices是Startup类中可以选择定义的一个方法,作用即实现了依赖注入(DI)的配置,只有把服务添加到服务容器中才能让这些服务可以通过依赖注入的形式在应用中使用。方法参数如下:

  • IServiceCollection:整个ASP.NET Core 默认带有依赖注入(DI),IServiceCollection是依赖注入的容器,首先创建一个类(Foo)和接口(IFoo),代码清单如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;namespace WebApplication1
{public interface IFoo{string GetFoo();}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;namespace WebApplication1
{public class Foo : IFoo{public string GetFoo(){return "foo";}}
}

在ConfigureServices 中将接口和实现注入至容器

public void ConfigureServices(IServiceCollection services)
{services.AddTransient<IFoo, Foo>();
}

如果想在每次Http请求后都使用IFoo的GetFoo()方法来处理,上面讲到可以在Configure方法中注册函数,在注册过程中由于使用了依赖注入(DI),因此可以直接通过 RequestServices.GetRequiredService<IFoo>() 泛型方法将IFoo对象在容器中取出。

app.Run((context) =>
{var str = context.RequestServices.GetRequiredService<IFoo>().GetFoo();return context.Response.WriteAsync(str);
});

除了自己的接口外,还支持通过扩展方法添加更多的注入方法,比如EntityFramework、mvc框架都实现自己的添加方法。

public void ConfigureServices(IServiceCollection services)
{// Add framework services.services.AddDbContext<ApplicationDbContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));services.AddIdentity<ApplicationUser, IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>().AddDefaultTokenProviders();services.AddMvc();// Add application services.services.AddTransient<IFoo, Foo>();}

转载于:https://www.cnblogs.com/shuangzimuchangzhu/p/8458296.html

.NET Core ConfigureServices相关推荐

  1. .NET Core ConfigureServices与Configure

    经常看到这个两个ConfigureServices与Configure,对于它们的用法总是说不清道不明,下面看了微软官方文档,再次记录总结下 简单的说 1.Configure配置请求管道 2.Conf ...

  2. .Net之配置文件自定义

    前文讲获取配置文件内容的时候,是获取默认的appsettings.json配置文件的配置,下面说明下如何进行自定义配置文件获取 1. Json Provider 1.1 构建独立的IConfigura ...

  3. netcore读取json文件_.net core读取json格式的配置文件

    在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用j ...

  4. ehchache验证缓存过期的api_ASP.NET Core ResponseCache进行缓存操作

    (给DotNet加星标,提升.Net技能) 转自:HueiFengcnblogs.com/yyfh/p/12361255.html 前言 本章将介绍客户端缓存将介绍浏览器缓存和服务端缓存,使用浏览器缓 ...

  5. 5.3Role和Claims授权「深入浅出ASP.NET Core系列」

    5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...

  6. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之三(配置文件读取)

    干了一天的活,还有点时间,给兄弟们写点东西吧. 大家有没有发现一个问题?那就是在.Net Core的MVC项目里面,没有.config文件了!!!同志们,没有config文件了啊,这样搞,我以后要做些 ...

  7. ef core mysql 字符集,EF Core 基础知识

    数据库连接字符串 在 ASP.NET Core 添加配置片段: { "ConnectionStrings": { "BloggingDatabase": &qu ...

  8. [asp.net core]SignalR一个例子

    摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...

  9. 从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD

    第1部分:http://www.cnblogs.com/cgzl/p/7637250.html 第2部分:http://www.cnblogs.com/cgzl/p/7640077.html 第3部分 ...

最新文章

  1. Apache Spark技术实战之6 -- spark-submit常见问题及其解决
  2. 如何在Linux系统上自动执行任务
  3. 查找_排序_思维导图
  4. 全球 IPv4 地址耗尽,IPv6 来了!
  5. 去年的今天我做了些什么?
  6. mf模型 svd++_序列推荐模型(一): FPMC
  7. std string与线程安全,是std :: regex线程安全吗?
  8. 在Eclipse上安装pydev开发工具
  9. 前端面试宝典-技巧篇
  10. ajax 图片加载不出来,jQuery.lazy()插件不能处理通过AJAX加载的图像
  11. 编写第一个Windows Mobile程序
  12. 原型图与Axure基础
  13. 我的大学 --- 郭天祥【3】
  14. 云-移动手机端项目总结
  15. 百度携手重庆渝中区,打造区块链大数据智能化应用示范城区
  16. MD5单向散列算法详解
  17. 如何在IntelliJ IDEA中添加JDK?
  18. ceph pg不一致问题
  19. 无刷电调--BLHELI_S的焊接问题与固件烧录
  20. 需求文档中的“项目前景与范围”

热门文章

  1. 更效率、更优雅 | 阿里巴巴开发者工具不完全盘点
  2. 《糖豆人:终极淘汰赛》成功背后蕴含了何种设计?
  3. JavaWeb课程复习资料——中文乱码上下文处理
  4. JavaWeb课程复习资料(八)——添加功能
  5. 【蓝桥杯Java_C组·从零开始卷】第五节(一)、BigInteger的使用
  6. MySQL数据库MVCC多版本并发控制简介
  7. AIX进程监控与管理
  8. Spring boot 上传文件时 MultipartFile 报空指针
  9. 字符串与字符串函数 - 字符串输出 常用字符串函数
  10. 017_python常用小技巧