2014-04-02 2 views
6

मैं अपने आवेदन में निंजा और quartz.net का उपयोग करता हूं और मैं नौकरी के साथ नौकरी इंजेक्ट करना चाहता हूं, लेकिन मुझे नहीं पता कि कैसे, क्योंकि मुझे पता है कि जॉबडिप्ल एक उदाहरण के बजाय जॉबिमप्ल की कक्षा द्वारा बनाया गया है, जैसे कि:कैसे निकलने के साथ क्वार्ट्ज की नौकरी इंजेक्षन करने के लिए?

JobBuilder.Create<SomeJob>() 

क्या कोई जानता है कि कैसे?

उत्तर

6

आपको Quartz.Spi.IJobFactory लागू करना होगा - जो नौकरी बनाने के लिए IResolutionRoot का उपयोग करता है (कार्यान्वयन के लिए नीचे देखें)। (वैकल्पिक रूप से या,: Quartz.IScheduler.JobFactory = new NinjectJobFactory(kernel);) Quartz.IScheduler.JobFactory = kernel.Get<NinjectJobFactory>(); : तो यह उपयोग करने के लिए अनुसूचक कॉन्फ़िगर


public class NinjectJobFactory : IJobFactory 
{ 
    private readonly IResolutionRoot resolutionRoot; 

    public NinjectJobFactory(IResolutionRoot resolutionRoot) 
    { 
     this.resolutionRoot = resolutionRoot; 
    } 

    public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler) 
    { 
     return (IJob)this.resolutionRoot.Get(bundle.JobDetail.JobType); 
    } 

    public void ReturnJob(IJob job) 
    { 
     this.resolutionRoot.Release(job); 
    } 
} 
+0

धन्यवाद एक बहुत है, मैं यह – TommyLike

+0

@BatteryBackupUnit मिला 'Quartz.IScheduler.JobFactory = * नई * NinjectJobFactory() 'शायद अधिक समझ में – stuartd

+0

हाँ हो सकता है। लेकिन मुझे लगता है कि यह 'Quartz.IScheduler.JobFactory = kernel.Get () 'के रूप में है या आप' NinjectJobFactory' इंजेक्शन दिए जाने दें .. इसलिए मैंने इसे छोड़ दिया ;-) – BatteryBackupUnit

संबंधित मुद्दे