2010-08-22 3 views
1

Dans mes contrôleurs, j'accéder à mes référentiels comme ceci:Comment injecter mes référentiels/interfaces dans une classe qui nécessite un constructeur vide?

private readonly IProjectRepository projectRepository; 

public ProjectsController(IProjectRepository projectRepository) { 
    Check.Require(projectRepository != null, "projectRepository may not be null"); 
    this.projectRepository = projectRepository; 
} 

[Transaction] 
public ActionResult Index() { 
    var projects = projectRepository.GetAll(); 
    return View(projects); 
} 

Cela me donne accès à la manipulation et persistance des objets à ma base de données. Je suis en train d'utiliser Quartz.Net, mais les emplois Quartz prendre un constructeur vide, comme ceci:

private readonly IProjectRepository projectRepository; 

    public QuartzJob() {} 

    public void Execute(JobExecutionContext context) 
    { 
     var projects = projectRepository.GetAll(); 
    } 

Cela se traduira par une référence d'objet nul parce que je ne l'ai pas lancé il. Comment puis-je contourner cela? Je me sens comme si cela a quelque chose à voir avec Castle Windsor, mais je suis encore nouveau à cela et je ne sais pas comment procéder. Je ne peux pas être la première personne à utiliser un projet Sharp avec Quartz.Net, toute aide serait appréciée. Merci!

Répondre

1

Utilisez le Quartz.Net integration facility. Il vous permettra de traiter des travaux de quartz comme n'importe quel autre service de Windsor.

+0

Sweet! Vous pouvez mentionner que quartz_jobs.xml doit être dans le dossier du serveur de dev et non dans le dossier du projet racine d'une application .NET. – KieselguhrKid

+0

@KieselguhrKid: Je n'ai pas compris votre commentaire ... quel est le "dossier du serveur dev"? J'ai ** do ** mon quartz_jobs.xml dans le répertoire racine du projet. –

+0

Au moins sur mon système, lorsqu'il est exécuté dans le contexte d'une application Web, il recherche le fichier quartz_jobs dans le dossier où le serveur IIS s'exécute, pas dans le dossier du projet. Donc, si vous courez dans un environnement de développement, il va chercher les quartz_jobs où le serveur cassini s'exécute. Si vous utilisez une application de console, comme dans votre exemple, c'est la même chose que le dossier du projet. Cela a-t-il un sens? –

Questions connexes