所以,我一直在关注this guide,当然所有的例子都是要么在访问中,他们被宣布同样的方法或控制器中的选项。对于我的生活,我无法弄清楚如何让它与任何随机课程一起工作。配置.NET核心
这里是我当前的代码:
appsettings.json
{
"Settings": {
"GameServerVersion": 14
},
....
}
Settings.cs
public class Settings
{
public int GameServerVersion { get; set; }
}
Startup.cs
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
this.Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddCors();
services.AddOptions();
services.Configure<Settings>(this.Configuration.GetSection("Settings"));
JobManager.StartAsync();
}
JobManager.cs
public class JobManager
{
private static IScheduler scheduler;
public static async void StartAsync()
{
// Quartz.NET jobs
// Setup scheduler, register jobs, etc.
// Trying to retrieve ```Settings.GameServerVersion``` to pass it to one of the jobs
}
}
现在指南建议,我应该使用以下(适用于我的例子):
private readonly Settings settings;
public JobManager(IOptions<Settings> settingsAccessor)
{
settings = settingsAccessor.Value;
}
而这正是我开始迷失。我知道我可以只使用以下内容,但我不知道如何将相关参数传递给构造函数。
JobManager jm = new JobManager(); // cannot use an empty constructor obviously
jm.StartAsync(); // no longer a static method
任何帮助或指导将不胜感激,因为我还是很新的C#。
你应该在注册依赖注入容器的JobManager('services.AddSingleton'或类似),并从那里,而不是手动构建解决。 – Evk
你可能会进入更多细节?我想我明白你的意思,但我不确定实施 –