using System; using System.Reflection; using System.Threading.Tasks; using Microsoft.Azure.WebJobs.Host.Bindings; namespace AutofacOnFunctions.Core.Services.Ioc { public class InjectAttributeBindingProvider : IBindingProvider { public Task TryCreateAsync(BindingProviderContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var parameterInfo = context.Parameter; var injectAttribute = parameterInfo.GetCustomAttribute(); if (injectAttribute == null) { return Task.FromResult(null); } var objectResolver = ServiceLocator.Resolve(); return Task.FromResult(new InjectAttributeBinding(parameterInfo, objectResolver)); } } }