そのため、私はNancy+TinyIoCを使用して小さなWebサービスを実行しています。これは機能します。次に、同じ依存関係のいくつかを必要とするQuartzジョブを作成する必要があります。理想的には、 Quartzチュートリアルで説明されているように、NancyのTinyIoCを使用してこれらを注入します。
Windsorを使用してこの例を見つけました。この例では、IoCコンテナに直接アクセスしますが、ナンシーでは、ここで尋ねられた同様の質問によると、これは大雑把で不要です。
私の質問は、これを行う正しい方法は何ですか?JobFactoryのコードは次のようになります。
public class MyJobFactory : IJobFactory
{
public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
{
return (IJob) TinyIoCContainer.Current.Resolve(bundle.JobDetail.JobType);
}
}
ただし、これは正しく挿入されたインスタンスを持つジョブを返すのではなく、依存関係の新しいインスタンスを持つジョブを返します。(これはシングルトンであると想定されているため、TinyIoCContainer.Currentによって返されるTinyIoCContainerは、ナンシーが使用するコンテナーと同じではないと私は信じています)。
更新
NancyBootstrapperを介してIoCコンテナを設定しています。
public class MyBootStrapper : DefaultNancyBootstrapper
{
protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
var push = new PushService();
// object initialization and Event Registration snipped
container.Register(cp);
}
}