通过.NET Core控制台应用程序中的依赖注入访问配置

时间:2016-10-17 08:22:52

标签: c# dependency-injection asp.net-core asp.net-core-1.0

如何正确激活使用ServiceCollection.Configure函数添加的配置?

     public static void Main(args[] args)
     { 
        serviceCollection = new ServiceCollection();
        serviceCollection .Configure<MyOptions>(Configuration.GetSection("options"));
        Services = serviceCollection.BuildServiceProvider();

        ActivatorUtilities.CreateInstance<MyOptions>(Services);
        ActivatorUtilities.CreateInstance<SomeClassThatNeedsoptions>(Services);
     }


 public SomeClassThatNeedsoptions(IOptions<MyOptions> options)
 {
     _options = options.Value;
 }

在第二个ActivatorUtilities.CreateInstance上,我收到以下错误

  

无法解析类型&#39; Microsoft.Extensions.Options.IOptions [MyOptions]`

的服务

我在控制台应用程序中写这个,据我所知,我使用ActivatorUtilities类手动注入依赖项。我似乎可以使用添加了AddSingleton的服务来实现它,但不能添加使用.Configure

添加的服务。

2 个答案:

答案 0 :(得分:0)

尝试实例化ServiceCollection之后立即添加

serviceCollection.AddOptions();

答案 1 :(得分:0)

请参阅此链接,获得一个很好的答案,该链接适用于“ 从类库访问Asp.net-core中的appsetting.json https://stackoverflow.com/a/39548459/966557?stw=2。 它适用于我的应用程序。

但是请注意,我不确定它是否适用于基于控制台的应用程序。