ASP.NET Core 配置文件(无处不在的依赖注入)

前烟:

  .NET Core 中取消了以往的 XML 节点配置文件,改用了 *.json 格式。

  在 Startup.cs 文件中,构造方法 build appsetting.json 文件,

  本文主要对解析配置文件的官方工具类做总结;

一、appsettings.json 文件

  在新建的 Core Web 项目中,默认会有一个全局的配置变量:IConfigurationRoot

  提供了索引器、GetSection 方法;

{
  "Host": "http://localhost:5966/",
  "Title": "Hello World",
  "SiteKeywords": "asp.net, c#, asp.net core, asp.net entityframework core",
  "Description": "DotNetClub: asp.net core",
  "ConnectionString": "Data Source=localhost;Initial Catalog=dbName;User Id=userName;Password=pwd;",

  "Redis": {
    "EndPoints": [ "localhost", "6379" ],
    "Password": "",
    "Db": ""
  },

  "Site": {
    "Host": "http://localhost:5966",
    "Title": "Hello World",
    "Description": "DotNetClub: asp.net core",
    "AllowRegister": true,
    "VerifyRegisterUser": false,
    "AdminUserList": []
  },

  "CookieName": "DotNetClub.User",

  "Categories": [
    {
      "Key": "share",
      "Name": "分享"
    },
    {
      "Key": "ask",
      "Name": "问答"
    },
    {
      "Key": "job",
      "Name": "招聘"
    }
  ]
}

  获取根节点数据:

  Configuration["ConnectionString"]

  Configuration["Title"]

  获取节点数据:

  services.Configure<RedisOptions>(Configuration.GetSection("Redis").Bind)

  重点记录的是这个 Microsoft.Extensions.Options.ConfigurationExtensions 提供的 IOptions

  Configure 方法可以将 appsettings.json 中的配置绑定某一个实体对象上。如:

    public class RedisOptions
    {
        /// <summary>
        /// Redis end points, such as "{host or ip}:{port}"
        /// </summary>
        public string[] EndPoints { get; set; }

        /// <summary>
        /// Redis password
        /// </summary>
        public string Password { get; set; }

        /// <summary>
        /// Default redis database
        /// </summary>
        public int Db { get; set; }
    }

  完成这样的一个过程就是 Configure 类实现了一个依赖注入;

时间: 2024-10-21 01:14:08

ASP.NET Core 配置文件(无处不在的依赖注入)的相关文章

ASP.NET Core中如影随形的&rdquo;依赖注入&rdquo;[下]: 历数依赖注入的N种玩法

在对ASP.NET Core管道中关于依赖注入的两个核心对象(ServiceCollection和ServiceProvider)有了足够的认识之后,我们将关注的目光转移到编程层面.在ASP.NET Core应用中基于依赖注入的编程主要涉及到两个方面,它们分别是将服务注册到ServiceCollection中,和采用注入的方式利用ServiceProvider提供我们所需的服务.我们先来讨论ASP.NET Core应用中如何进行服务注册.[本文已经同步到<ASP.NET Core框架揭秘>之中

[ASP.NET Core 3框架揭秘] 依赖注入:控制反转

ASP.NET Core框架建立在一些核心的基础框架之上,这些基础框架包括依赖注入.文件系统.配置选项和诊断日志等.这些框架不仅仅是支撑ASP.NET Core框架的基础,我们在进行应用开发的时候同样会频繁地使用到它们.对于这里提到的这几个基础框架,依赖注入尤为重要.ASP.NET Core应用在启动以及后续针对请求的处理过程中,它会依赖各种的组件提供服务.为了便于定制,这些组件一般会以接口的形式进行"标准化",我们将这些标准化的组件统一称为"服务(Service)"

[ASP.NET Core 3框架揭秘] 依赖注入:IoC模式

原文:[ASP.NET Core 3框架揭秘] 依赖注入:IoC模式 正如我们在<依赖注入:控制反转>提到过的,很多人将IoC理解为一种"面向对象的设计模式",实际上IoC不仅与面向对象没有必然的联系,它自身甚至算不上是一种设计模式.一般来讲,设计模式提供了一种解决某种具体问题的方案,但是IoC既没有一个针对性的问题领域,其自身也没有提供一种可操作性的解决方案,所以我们更加倾向于将IoC视为一种设计原则.很多我们熟悉的设计模式背后都采用了IoC原则,接下来我们就来介绍几种典

[ASP.NET Core 3框架揭秘] 依赖注入:依赖注入模式

原文:[ASP.NET Core 3框架揭秘] 依赖注入:依赖注入模式 IoC主要体现了这样一种设计思想:通过将一组通用流程的控制权从应用转移到框架之中以实现对流程的复用,并按照"好莱坞法则"实现应用程序的代码与框架之间的交互.我们可以采用若干设计模式以不同的方式实现IoC,比如我们在前面介绍的模板方法.工厂方法和抽象工厂,接下来我们介绍一种更有价值的IoC模式:依赖注入(DI:Dependency Injection). 一.由容器提供对象 和前面介绍的工厂方法和抽象工厂模式一样,依

[ASP.NET Core 3框架揭秘] 依赖注入:一个Mini版的依赖注入框架

在前面的章节中,我们从纯理论的角度对依赖注入进行了深入论述,我们接下来会对.NET Core依赖注入框架进行单独介绍.为了让读者朋友能够更好地理解.NET Core依赖注入框架的设计与实现,我们按照类似的原理创建了一个简易版本的依赖注入框架,也就是我们在前面多次提及的Cat. 源代码下载 普通服务的注册与消费泛型服务的注册与消费多服务实例的提供服务实例的生命周期 一.编程体验 虽然我们对这个名为Cat的依赖注入框架进行了最大限度的简化,但是与.NET Core框架内部使用的真实依赖注入框架相比,

[ASP.NET Core 3框架揭秘] 依赖注入[5]: 利用容器提供服务

毫不夸张地说,整个ASP.NET Core框架是建立在依赖注入框架之上的.ASP.NET Core应用在启动时构建管道以及利用该管道处理每个请求过程中使用到的服务对象均来源于依赖注入容器.该依赖注入容器不仅为ASP.NET Core框架自身提供必要的服务,同时也是应用程序的服务提供者,依赖注入已经成为了ASP.NET Core应用的基本编程模式. 一.服务的注册与消费 为了让读者朋友们能够更加容易地认识.NET Core提供的依赖注入框架,我在"<一个迷你版DI框架>"中特

ASP.NET Core技术研究-探秘依赖注入框架

原文:ASP.NET Core技术研究-探秘依赖注入框架 ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务.提供服务.依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者. 毫不夸张的说,ASP.NET Core通过依赖注入实现了各种服务对象的注册和创建,同时也实现了面向抽象的编程模式和编程体验,提升了应用程序的扩展性. 今天,我们普及一下ASP.NET Core中依赖注入的一些基本知识. 一.服务的注册 我们通过创建一个ASP.NET C

ASP.NET Core 基础知识(一) 依赖注入

依赖: 类A用到了类B,我们就说类A依赖类B.如果一个类没有任何地方使用到,那这个类基本上可以删掉了. public class Test { private MyDependency md = new MyDependency(); public void Print() { md.Print(); } } public class MyDependency { public void Print() { Console.WriteLine("this is mydependency"

Asp.Net Core 3.0的依赖注入改变

Asp.Net Core 3.0出来很久了,预览版的时候就被我偶像Lemon大人,带着尝试摸索了一下这个 那么Asp.Net Core 3.0和Asp.Net Core 2.X到底有哪些区别呢? Asp.Net Core 2.X是如何替换依赖注入容器的 三方替换DI容器是在Startup类的ConfigureServices方法上修改 public void ConfigureServices(IServiceCollection services) { //... } 改为 public IS

Asp.Net.Core 系列-中间件和依赖注入进阶篇

上一节讲了中间件和依赖注入的基础,紧接着: 中间件是怎么使用的?使用步骤是什么? 只要把中间件注册到管道中就行了,可以借助Startup对象(DelegateStartup或者ConventionBasedStartup)来完成之外,也可以利用另一个叫做StartupFilter的对象来实现.所谓的StartupFilter是对所有实现了IStartupFilter接口的类型及其对象的统称.IStartupFilter接口定义了如下一个唯一的方法Configure,该方法的参数next返回的Ac