gpt4 book ai didi

.net - 使用 Nancy + TinyIoC 通过 Quartz JobFactory 注入(inject)依赖

转载 作者:行者123 更新时间:2023-12-02 05:27:36 29 4
gpt4 key购买 nike

所以我使用 Nancy + TinyIoC 来运行一个小型网络服务。这行得通。现在我需要创建一个 Quartz 作业,它需要一些相同的依赖项,理想情况下我想使用 Nancy 的 TinyIoC 来注入(inject)这些,如 Quartz Tutorial 中所述。 .

我找到了一个使用 Windsor 的示例,其中他们直接访问 IoC 容器,但根据此处提出的类似问题,在南希看来,这是粗鲁且不必要的。

那么我的问题是,执行此操作的正确方法是什么?我的 JobFactory 的代码如下所示:

public class MyJobFactory : IJobFactory
{
public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
{
return (IJob) TinyIoCContainer.Current.Resolve(bundle.JobDetail.JobType);
}
}

但是这不会返回具有正确注入(inject)实例的作业,而是返回具有依赖项新实例的作业。 (这应该是单例,这让我相信 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);
}
}

最佳答案

leads me to believe that the TinyIoCContainer returned by TinyIoCContainer.Current is not the same container as the one Nancy uses).

合二为一:-)。Current 是一个静态实例,我们应该从 tinyioc.cs 文件的 Nancy 版本中删除它——它与 Bootstrap 使用的实例不同。

如果您绝对必须使用服务位置,并且没有办法只使用构造函数注入(inject),您可以覆盖 Bootstrap 中的 GetApplicationContainer 方法并返回 .Current 实例,以便 Nancy 改用它.默认情况下我们不使用它,因为我们不推荐它

关于.net - 使用 Nancy + TinyIoC 通过 Quartz JobFactory 注入(inject)依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12858648/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com