我是.NET Core的新手,如果这是一个新问题,我会道歉。
我使用vs 2017在.net core 2中创建了一个web api项目。
对我来说,我有一些连接设置的appsettings.json文件。
在阅读了Microsoft教程中的IOptions<T>后,我正在执行以下操作:

public void ConfigureServices(IServiceCollection services)
{
    services.AddOptions();
    services.Configure<MyOptions>(Configuration);

    // I want to access MyOptions object here to configure other services?how do i do that?

    service.AddHangfire( // Get MyOptions.HangfireConenctionString etc.)
}

如何在MYOptions中访问创建的ConfigureServices对象,以及是否需要在Configure(IApplicationBuilder app,..)方法中访问它?
在教程中,我只在控制器中看到了注入IOptions<T>的示例。

最佳答案

在中使用某些设置

public void ConfigureServices(IServiceCollection services)
{
    // Load the settings directly at startup.
    var settings = Configuration.GetSection("Root:MySettings").Get<MySettings>();

    // Verify mailSettings here (if required)

    service.AddHangfire(
        // use settings variable here
    );

    // If the settings needs to be injected, do this:
    container.AddSingleton(settings);
}

如果您要求在应用程序组件内使用配置对象,请不要将IOptions<T>注入组件,因为这只会导致不可原谅的缺点,如here所述。相反,直接注入值,如下例所示。
public class HomeController : Controller
{
    private MySettings _settings;
    public HomeController(MySettings settings)
    {
        _settings = settings;
    }
}

关于c# - 访问IOptions <T>对象.NET Core,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47035983/

10-11 01:51