C# ASP.NET 5-访问启动中的依赖项容器。配置
我想访问我的C# ASP.NET 5-访问启动中的依赖项容器。配置,c#,asp.net-core,C#,Asp.net Core,我想访问我的选项实例,该实例在配置服务中作为单例添加。这是我的密码: public class Startup { private IConfiguration Configuration { get; set; } public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) { var builder = new ConfigurationBuilder(appEnv.
选项
实例,该实例在配置服务
中作为单例添加。这是我的密码:
public class Startup
{
private IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton((serviceProvider) => ConfigurationBinder.Bind<Options>(Configuration));
}
public void Configure(IApplicationBuilder app)
{
var root = ""; // I want to access my Options instance to get root from it
var fileServerOptions = new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(root)
};
app.UseFileServer(fileServerOptions);
}
}
公共类启动
{
专用IConfiguration配置{get;set;}
公开启动(IHostingEnvironment env、IApplicationEnvironment appEnv)
{
var builder=新配置生成器(appEnv.ApplicationBasePath)
.AddJsonFile(“config.json”)
.AddenEnvironmentVariables();
Configuration=builder.Build();
}
public void配置服务(IServiceCollection服务)
{
services.AddSingleton((serviceProvider)=>ConfigurationBinder.Bind(Configuration));
}
公共void配置(IApplicationBuilder应用程序)
{
var root=”“;//我想访问我的选项实例以从中获取根
var fileServerOptions=newfileserveroptions()
{
FileProvider=新的物理FileProvider(根)
};
使用文件服务器(文件服务器选项);
}
}
我的问题是如何在
配置方法中访问选项的实例以设置根变量。根据Joe Audette的评论,这是解决方案:
var options = app.ApplicationServices.GetService<Options>();
var options=app.ApplicationServices.GetService();
如中所建议,运行时可以将选项直接注入配置方法:
public void Configure(IApplicationBuilder app, Options options)
{
// do something with options
}
我在这里回答了一个类似的问题,谢谢。这就是我的答案。谢谢,这是一个很好的解决方案。