我正在尝试构建我的第一个源生成器,该源生成器旨在注册hangfire重复作业,并且基本版本的工作原理与.你可以在这个项目的master分支上看到这个
想法是,您将能够在重复作业类别中添加一个属性 -
[RecurringJob("DeleteOldReportsAtMidnight", "* *678 * *")]
public class DeleteOldReports
{
public void Execute()
{
}
}
源码生成器自动生成-
namespace TestSolution;
// <auto-generated/>
using Hangfire;
using Microsoft.Extensions.DependencyInjection;
public static class ServiceRegistrationExtensions
{
public static IServiceCollection RegisterServicesFromTestSolution(this IServiceCollection sc)
{
RecurringJob.AddOrUpdate<TestSolution.DeleteOldReports>("DeleteOldReportsAtMidnight", x => x.Execute(), "* *678 * *");
return sc;
}
}
用户所要做的就是在启动时调用注册方法
ServiceRegistrationExtensions.RegisterServicesFromTestSolution(services)
我现在遇到的问题是使用带有可选参数的更高级属性。您可以在不同的分支上看到我的所需属性
我能够获取类的属性,但
NamedArguments
始终为空
自从我做 SG 以来已经有一段时间了,但我认为问题是,你实际上并没有使用命名参数,它应该看起来像这样:
PrintOrderDetails(orderNum: 31, productName: "Red Mug", sellerName: "Gift Shop");