加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:04:19 所属栏目:百科 来源:网络整理
导读:JobBuilder的默认创建方法是 IJobDetail paymentJob = JobBuilder.CreateHello().WithIdentity(jobName,groupName).Build(); 我检查了重载但是没有重载我们可以在里面有一个类的实例.创建方法.像这样的东西 IJobDetail paymentJob = JobBuilder.Createnew He
JobBuilder的默认创建方法是

IJobDetail paymentJob = JobBuilder.Create<Hello>().WithIdentity(jobName,groupName).Build();

我检查了重载但是没有重载我们可以在里面有一个类的实例.创建方法.像这样的东西

IJobDetail paymentJob = JobBuilder.Create<new Hello()>().WithIdentity(jobName,groupName).Build();

但这会给出错误

Operator < cannot be applied to the ‘method group’ or ‘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();
        }

    }
}

解决方法

只需更改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;
        }

    }
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读