使用 Ninject 進行依賴注入
以下示例顯示如何使用 Ninject 作為 IoC 容器設定依賴注入。
首先將 CustomModule 類新增到 WebJob 專案中,然後在其中新增任何依賴項繫結。
public class CustomModule : NinjectModule
{
public override void Load()
{
Bind<IMyInterface>().To<MyService>();
}
}
然後建立一個 JobActivator 類:
class JobActivator : IJobActivator
{
private readonly IKernel _container;
public JobActivator(IKernel container)
{
_container = container;
}
public T CreateInstance<T>()
{
return _container.Get<T>();
}
}
在 Program 類的 Main 函式中設定 JobHost 時,將 JobActivator 新增到 JobHostConfiguration
public class Program
{
private static void Main(string[] args)
{
//Set up DI
var module = new CustomModule();
var kernel = new StandardKernel(module);
//Configure JobHost
var storageConnectionString = "connection_string_goes_here";
var config = new JobHostConfiguration(storageConnectionString) { JobActivator = new JobActivator(kernel) };
//Pass configuration to JobJost
var host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
}
最後在 Functions.cs 類中,注入你的服務。
public class Functions
{
private readonly IMyInterface _myService;
public Functions(IMyInterface myService)
{
_myService = myService;
}
public void ProcessItem([QueueTrigger("queue_name")] string item)
{
_myService .Process(item);
}
}