<p>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).</p>
<p>Tout d’abord, créez le IJobActivator personnalisé qui peut résoudre un type de travail en utilisant votre conteneur DI préféré :</p>
<pre><code class="lang-auto">public class MyActivator : IJobActivator
{
private readonly IUnityContainer _container;
public MyActivator(IUnityContainer container)
{
_container = container;
}
public T CreateInstance<T>()
{
return _container.Resolve<T>();
}
}
</code></pre>
<p>Vous devez enregistrer cette classe en utilisant un JobHostConfiguration personnalisé :</p>
<pre><code class="lang-auto">var config = new JobHostConfiguration
{
JobActivator = new MyActivator(myContainer)
};
var host = new JobHost(config);
</code></pre>
<p>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) :</p>
<pre><code class="lang-auto">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);
}
}
</code></pre>