【发布时间】:2015-02-21 02:34:30
【问题描述】:
所以我正在使用 Nancy + TinyIoC 来运行一个小型 Web 服务。这行得通。现在我需要创建一个 Quartz 作业,它需要一些相同的依赖项,理想情况下我想使用 Nancy 的 TinyIoC 来注入这些,如 Quartz Tutorial 中所述。
我发现了一个使用 Windsor 的示例,其中他们直接访问 IoC 容器,但在 Nancy 看来,根据此处提出的类似问题,这是粗略且不必要的。
那么我的问题是,正确的方法是什么?我的 JobFactory 的代码如下所示:
public class MyJobFactory : IJobFactory
{
public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
{
return (IJob) TinyIoCContainer.Current.Resolve(bundle.JobDetail.JobType);
}
}
但这不会返回具有正确注入实例的作业,而是返回具有依赖项的新实例的作业。 (应该是单例,这让我相信 TinyIoCContainer.Current 返回的 TinyIoCContainer 与 Nancy 使用的容器不同)。
更新
我正在通过 Nancy Bootstrapper 设置 IoC 容器:
public class MyBootStrapper : DefaultNancyBootstrapper
{
protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
var push = new PushService();
// object initialization and Event Registration snipped
container.Register(cp);
}
}
【问题讨论】:
标签: .net quartz.net nancy tinyioc