2017-03-19 28 views
0

我在.net Core 1.1, 上启动了一些基础项目,我希望将appsettings.json的某些属性映射到对象,但我可能无法理解正确名称约定或相当基本的东西如何将配置对象从appsettings.json正确绑定到用户对象

Regarding MSDN使用选项和配置对象部分, 它很容易使用它。 我加入的下行appsettings.json

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Warning" 
    } 
    }, 

    "XXXOptions": { 
    "X1": { 
     "AppId": "11", 
     "AppCode": "22" 
    }, 
    "X2": { 
     "AppId": "", 
     "AppCode": "" 
    } 
    } 
} 

我添加了自定义的类

public class XXXOptions 
    { 
     public XXXOptions() 
     { 
     } 
     public X1 X1{ get; set; } 
     public X2 X2{ get; set; } 
    } 

    public class X1 
    { 
     public int AppId { get; set; } 
     public int AppCode { get; set; } 
    } 

    public class X2 
    { 
     public int AppId { get; set; } 
     public int AppCode { get; set; } 
    } 

我添加下面的代码到Startup.cs

public void ConfigureServices(IServiceCollection services) 
     { 
      // Adds services required for using options. 
      services.AddOptions(); 

      // Register the IConfiguration instance which MyOptions binds against. 
      services.Configure<XXXOptions>(Configuration); 

      // Add framework services. 
      services.AddMvc(); 
     } 

public class XXXController : Controller 
    { 
     private readonly XXXOptions _options; 
     public XXXController(IOptions<XXXOptions> optionsAccessor) 
     { 
      _options = optionsAccessor.Value; 
     } 

     public IActionResult Index() 
     { 
      var option1 = _options.X1; 
      return Content($"option1 = {option1.AppCode}, option2 = {option1.AppId}"); 
      return View(); 
     } 
    } 

optionsAccessor.Value - 价值containes空值在XXXController构造函数。

但在JsonConfigurationProvider好像框架显示mappet值配置财产

任何想法里面?

回答

1

ConfigureServices方法改变:

services.Configure<XXXOptions>(Configuration); 

services.Configure<XXXOptions>(Configuration.GetSection("XXXOptions")); 
+0

叶氏,这很简单!我对此表示感谢 –

相关问题