首页 > 其他 > 详细

IOC容器3

时间:2020-01-09 11:16:32      阅读:83      评论:0      收藏:0      [点我收藏+]

一、Options注入模式

(相当于对appsettings.json根据字段映射到Model数据类,然后通过构造函数注入使用)

强类型的 Options

Options is a framework for accessing and configuring POCO settings.

简单来说,Options 就是将一个 POCO 的配置类,通过在Startup类中注册到容器中,在后续使用的时候使用构造函数注入来获取到POCO对象。我们将这种编程模式称为Options模式。

首先定义一个 Options

public class MyOptions
{
    public string DefaultValue { get; set; }
}

然后我们在对应的appsettings.json中添加如下片段:

{
  "MyOptions": {
    "DefaultValue" : "first"
  }
}

Startup中的ConfigureServices方法中,进行服务的注册:

public void ConfigureServices(IServiceCollection services)  
{
    services.Configure<MyOptions>(Configuration.GetSection("MyOptions"));
}

最后,便在控制器中注入IOptions<MyOptions>,通过其Value属性对MyOptions进行访问:

[Route("api/[controller]")]
public class ValuesController : Controller  
{
    private readonly MyOptions _options;
    public ValuesController(IOptions<MyOptions> options)
    {
        _options = options.Value;
    }

    [HttpGet]
    public string Get()
    {
        return _options.DefaultValue;
    }
}

 

二、Configure 方法

Options框架为我们提供了一系统的IServiceCollection的扩展方法,方便我们的使用。

直接使用Action配置

// 最简单的注册方式
services.Configure<MyOptions>(o => o.DefaultValue = true);

// 指定具体名称
services.Configure<MyOptions>("my", o => o.DefaultValue = true);

// 配置所有实例
services.ConfigureAll<MyOptions>(o => o.DefaultValue = true);

通过配置文件进行配置

// 使用配置文件来注册实例
services.Configure<MyOptions>(Configuration.GetSection("Sign"));

// 指定具体名称
services.Configure<MyOptions>("my", Configuration.GetSection("Sign"));

// 配置所有实例
services.ConfigureAll<MyOptions>(Configuration.GetSection("Sign"));

PostConfigure方法

PostConfigure 方法在 Configure 方法之后执行,是2.0中新增加的。

services.PostConfigure<MyOptions>(o => o.DefaultValue = true);
services.PostConfigure<MyOptions>("smyign", o => o.DefaultValue = true);
services.PostConfigureAll<MyOptions>(o => o.DefaultValue = true);

技术分享图片

 

 

ConfigureNamedOptions

IOC容器3

原文:https://www.cnblogs.com/fger/p/12170301.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!