C#Quartz.Net动态引用未知类



正在更新我的问题。我使用的是.net核心6,而不是MVC。我已经根据这里的例子完成了所有工作https://damienbod.com/2021/11/08/asp-net-core-scheduling-with-quartz-net-and-signalr-monitoring.工作非常完美。

但是,我需要能够动态地构建作业。因此,我从初级阶段开始,创建了一个单独的类文件,该文件在启动时运行以生成作业。只需移动代码就可以了。

接下来,我创建了一个作业列表,最终将从数据库中提取。我从新创建的类中调用这个方法,并将建立一个所有作业及其属性的列表。当我循环浏览这个列表以创建作业时,我可以引用除类引用之外的所有内容。这就是我被卡住的地方。下面是工作列表和类别,供参考。

List<JobsDetail> Jobs = new List<JobsDetail>();
private class JobsDetail
{
public string jobKey { get; set; }
public string triggerKey { get; set; }
public object methodName { get; set; }
public int scheduleInterval { get; set; }
}

下面的代码正在寻找一个要传递给它的类对象。我需要能够将Job.methodName属性作为addJob函数将识别的类对象传递。如何在那里传递一个字符串?我尝试过将字符串转换为类型,然后创建它的实例,但没有被接受。

Type t = a.GetType("NameSpace." + Job.methodName); //Working
var instance = (Object)Activator.CreateInstance(t); //Appears to be working
var ConcurrentJobKey = new JobKey(Job.jobKey); //Passing param from Jobs list
q.AddJob<Job.methodName>(opts => //Attempting to pass method name
opts.WithIdentity(ConcurrentJobKey));
q.AddTrigger(opts => opts
.ForJob(ConcurrentJobKey)
.WithIdentity(Job.triggerKey) //Passing param from Jobs list
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(Job.scheduleInterval) //Passing param from Jobs list
.RepeatForever()));

我已经将问题缩小到我的尝试是有效的,因为我在类上没有空的构造函数,它不起作用。如何在没有构造函数的情况下调用类?

如果你能给我任何意见,我将不胜感激。

已回答。我遇到的主要问题是,由于我使用signalR和日志记录,类上存在的构造函数需要参数。它失败了,因为我所尝试的并没有通过这些。所以不是

q.AddJob<Job.methodName>(opts => opts.WithIdentity(ConcurrentJobKey));

使用

q.AddJob(t, ConcurrentJobKey); //T referenced from above for the type

最新更新