2012-04-05 3 views
3
класса

работы должны реализовывать интерфейс работы. "Я создал простую работу с помощью Quartz.Net 1.0.3Quartz.Net Создание рабочих мест на лету

public class SimpleTestJob : IJob 
    { 
     public virtual void Execute(JobExecutionContext context) 
     { 
      System.Diagnostics.EventLog.WriteEntry("QuartzTest", "This is a test run"); 

        } 
    } 

Тогда я попытался динамически добавить работу над к Quartz сервер

Сначала я получил тип с помощью отражения

string jobType = "Scheduler.Quartz.Jobs.SimpleTestJob,Scheduler.Quartz,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null";  

var schedType= Type.GetType(jobType, false, true); 

Это working.Then Я пытаюсь создать объект JobDetail

JobDetail job = job = new JobDetail(jobName, groupName, schedType.GetType()); 

Но я получаю сообщение об ошибке из рамки Quartz.Net.

"Job class must implement the Job interface." 

Пожалуйста, помогите

ответ

2

Я использую Quartz 1.0.3, он скомпилирован с .net 3.5.

Но schedType.GetType

возвращаемый тип с атрибутом RunTime версии 4.

Действительно мне не нужно использовать функцию GetType, потому что alread есть тип, который я получил, прежде чем

var schedType= Type.GetType(jobType, false, true); 

Таким образом, мое исправление было

JobDetail job = new JobDetail(jobName, groupName, schedType); 
2

Попробуйте удалить виртуальный ключевое слово, и вы также можете попробовать использовать оператор TYPEOF, где у вас есть schedType.GetType(). Я не уверен, какой тип schedType заканчивается, он определяется как var.

Смежные вопросы