quartz.net中JobBuilder的Create方法中的类实例

Nik*_*esh 5 c# quartz.net

JobBuilder的默认创建方法是

IJobDetail paymentJob = JobBuilder.Create<Hello>().WithIdentity(jobName, groupName).Build();
Run Code Online (Sandbox Code Playgroud)

我检查了重载,但没有重载可以让我们在其中拥有类的实例。创建方法。像这样的东西

IJobDetail paymentJob = JobBuilder.Create<new Hello()>().WithIdentity(jobName, groupName).Build();
Run Code Online (Sandbox Code Playgroud)

但这给出了一个错误

运算符 < 不能应用于“方法组”或“Hello”

我需要这个的原因是:

public abstract class Hello:IJob
{
    public abstract void Execute(IJobExecutionContext context);
}

public Hello1: Hello
{
    public void Execute(IJobExecutionContext context)
    {
        //implementation
    }
}

public Hello2: Hello
{
    public void Execute(IJobExecutionContext context)
    {
        //implementation
    }
}
public static HelloFactory
{

    public Hello GetHelloType(HelloEnum enum)
    {
        Hello job = new Hello();
        switch(enum)
        {
            case HelloEnum.Type1: job = new Hello1();
            case HelloEnum.Type2: job = new Hello2();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

jvi*_*lta 1

只需更改您的 HelloFactory 以返回 Type 对象而不是 Hello 对象:

public static class HelloFactory
{

    public Type GetHelloType(HelloEnum theEnum)
    {
        Type type;
        switch (theEnum)
        {
            case HelloEnum.Type1:
                type = typeof(Hello1);
                break;
            case HelloEnum.Type2: job = typeof(Hello2);
                break;
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

或者,实现您自己的 JobFactory。以下是如何实现的示例: http://jayvilalta.com/blog/2012/07/23/creating-a-custom-quartz-net-jobfactory/