Injection de dépendances avec le SDK Azure WebJobs ?
Le SDK Azure WebJobs prend désormais en charge les méthodes d’instance. En combinant cela avec un IJobActivator personnalisé, vous pouvez utiliser l’injection de dépendances (DI).
Tout d’abord, créez le IJobActivator personnalisé qui peut résoudre un type de travail en utilisant votre conteneur DI préféré :
public class MyActivator : IJobActivator
{
private readonly IUnityContainer _container;
public MyActivator(IUnityContainer container)
{
_container = container;
}
public T CreateInstance<T>()
{
return _container.Resolve<T>();
}
}
Vous devez enregistrer cette classe en utilisant un JobHostConfiguration personnalisé :
var config = new JobHostConfiguration
{
JobActivator = new MyActivator(myContainer)
};
var host = new JobHost(config);
Ensuite, vous pouvez utiliser une classe simple avec des méthodes d’instance pour vos travaux (ici j’utilise la fonctionnalité d’injection par constructeur d’Unity) :
public class MyFunctions
{
private readonly ISomeDependency _dependency;
public MyFunctions(ISomeDependency dependency)
{
_dependency = dependency;
}
public Task DoStuffAsync([QueueTrigger("queue")] string message)
{
Console.WriteLine("Injected dependency: {0}", _dependency);
return Task.FromResult(true);
}
}