我正在尝试使用非空构造函数在 .NET 中执行 Quartz 调度程序作业,并尝试使用 .NET 的默认依赖项注入来提供依赖项。这是我的作业类,需要依赖注入
public class MyJob : IJob
{
private readonly ILogger _logger;
public MyJob(ILogger<MyJob> logger)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public Task Execute(IJobExecutionContext context)
{
_logger.LogDebug("It's working!");
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我开展工作的方式
IJobDetail jobDetail = JobBuilder.Create<MyJob>()
.WithIdentity("MyID", "MyGroup")
.Build();
var triggerBuilder = TriggerBuilder.Create()
.WithIdentity("MyID")
.StartAt(DateTime.Now)
.WithCronSchedule("*/1 * * * * ?"); // Every second
var trigger = triggerBuilder.Build();
_scheduler.ScheduleJob(jobDetail, trigger)
Run Code Online (Sandbox Code Playgroud)
现在,我在我的应用程序配置中定义了以下内容:
// Quartz configuration.
services.AddQuartz(q =>
{
// Add dependency injection.
q.UseMicrosoftDependencyInjectionScopedJobFactory(options => …Run Code Online (Sandbox Code Playgroud) 我想听我的表单的值更改,但不是整个表单,而是仅针对已更改的表单控件。
例如,如果我的表格看起来像这样。
this.form = this._fb.group({
firstName: [''],
lastName: [''],
... // other stuff.
});
Run Code Online (Sandbox Code Playgroud)
如果我订阅 valuechanges
this.form.valueChanges.subscribe((e) => {
console.log(e);
});
Run Code Online (Sandbox Code Playgroud)
然后在表单中填写名字将导致整个表单值对象的打印输出。
{名字:'输入',姓氏:'',...}
但我想知道的是哪个表单控件(在本例中为firstName)在不订阅每个单独的表单控件的情况下被更改。这样我想要的输出只是
{名字:'输入'}
假设我有这门课
public sealed class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string DisplayName => $"{FirstName} {LastName}";
}
Run Code Online (Sandbox Code Playgroud)
我想记录该DisplayName财产。
/// <summary>
/// A space seperated string of the FirstName and LastName
/// </summary>
public string DisplayName => $"{FirstName} {LastName}";
Run Code Online (Sandbox Code Playgroud)
但我现在的问题是,如果我将属性重命名LastName为FamilyName. 我的代码当然仍然可以编译,但我的文档将引用不存在的属性。
有没有一种方法可以像这种伪语法一样在属性DisplayName中引用实际属性LastName。
/// <summary>
/// A space seperated string of the <prop=FirstName> and <prop=LastName>
/// </summary>
Run Code Online (Sandbox Code Playgroud)
这样重构我的代码也会重构文档或者编译器至少会给出警告或者可能是错误?