3

JobクラスはJobインターフェースを実装する必要があります。"Quartz.Net1.0.3を使用して簡単なジョブを作成しました

  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);

動作しています。次に、JobDetailオブジェクトを作成しようとしています。

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

しかし、Quartz.Netフレームワークからエラーが発生します。

"Job class must implement the Job interface."

助けてください

4

2 に答える 2

2

virtualキーワードを削除してみてください。また、schedType.GetType()があるtypeof演算子を使用してみることもできます。schedTypeのタイプがvarとして定義されている場合、最終的にどのタイプになるかわかりません。

于 2012-04-06T19:35:59.443 に答える
2

.net 3.5 でコンパイルされた Quartz 1.0.3 を使用しています。

しかし、schedType.GetType

属性 RunTime バージョン 4 を持つ型を返します。

以前に受け取った型を既に持っているため、本当に GetType 関数を使用する必要はありません

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

だから私の修正は

JobDetail job = new JobDetail(jobName, groupName, schedType);
于 2012-04-07T20:03:11.527 に答える