Azure WebJobs SDK现在支持实例方法。将此与自定义IJobActivator结合使用,可以使用DI。
首先,创建自定义的IJobActivator,它可以使用您喜欢的DI容器解析作业类型:
public class MyActivator : IJobActivator{ private readonly IUnityContainer _container; public MyActivator(IUnityContainer container) { _container = container; } public T CreateInstance<T>() { return _container.Resolve<T>(); }}您需要使用自定义JobHostConfiguration注册此类:
var config = new JobHostConfiguration{ JobActivator = new MyActivator(myContainer)};var host = new JobHost(config);然后,您可以为工作使用带有实例方法的简单类(这里我使用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); }}


