Я пишу простую функцию Azure.
Я установил пакет AzureFunctions.Autofac
nuget и хотел бы использовать его в качестве библиотеки DI
.
Я настроил следующий класс AutofacConfig
для регистрации моих типов:
public class AutofacConfig
{
public AutofacConfig(string functionName)
{
DependencyInjection.Initialize(builder =>
{
//do all of you initialization here
//db client
builder.RegisterType<EventComponent>()
.As<IComponent<EventModel>>().SingleInstance();
}, functionName);
}
}
Вот мой класс EventComponent
, в который я хотел бы добавить предоставленный экземпляр ILogger
.
public class EventComponent : IComponent<EventModel>
{
private ILogger _log;
public EventComponent(ILogger logger)
{
_log = logger;
}
}
Вот как я внедряю свой EventComponent:
[FunctionName("AddEvent")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]HttpRequestMessage req, ILogger log, [Inject]IComponent<EventModel> component)
{
log.LogInformation("C# HTTP trigger function processed a request.");
await component.Add(new EventModel() { Id = Guid.NewGuid(), Description = $"Test description nr: {new Random().Next(1, 100000)}", User = "Test User" });
return req.CreateResponse(HttpStatusCode.OK);
}
Проблема в том, что я получаю исключение из вышеперечисленного, поскольку Autofac
не может разрешить параметр Microsoft.Extensions.Logging.ILogger.
Вот сообщение об исключении:
Параметр привязки исключения «компонент» ... Не удается разрешить параметр «Microsoft.Extensions.Logging.ILogger logger» конструктора «Void .ctor (Microsoft.Extensions.Logging.ILogger)». (Подробности см. Во внутреннем исключении.) -> Ни один из конструкторов, найденных с 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' для типа 'Event.Function.Components.EventComponent', не может быть вызван с доступными службами и параметрами: \ r \ nНе удается разрешить параметр «Microsoft.Extensions.Logging.ILogger logger» конструктора «Void .ctor (Microsoft.Extensions.Logging.ILogger)». ",
Как я могу добавить экземпляр ILogger
в мой EventComponent
класс?