При попытке вставить один из моих компонентов я получаю следующую ошибку:
Нет конструкторов для типа 'Event.Function.Components.EventComponent' с помощью поиска конструкторов 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'
Как видите, я пытаюсь добавить следующие компоненты:
DependencyInjection.Initialize(builder =>
{
builder.RegisterType<DatabaseContext>().As<IDatabaseContext>()
.WithParameter("connectionString", ConfigurationManager.AppSettings["connectionString"].ToString());
builder.RegisterType<Repository>().As<IRepository>().SingleInstance().PropertiesAutowired();
builder.RegisterType<EventComponent>().As<IEventComponent>().SingleInstance().PropertiesAutowired();
builder.RegisterType<CommentComponent>().As<ICommentComponent>().SingleInstance().PropertiesAutowired();
}, functionName);
Ниже, пожалуйста, найдите class
объекты, которые я пытаюсь внедрить.
public class DatabaseContext : DbContext, IDatabaseContext
{
public DatabaseContext(string connectionString) : base(connectionString)
{
}
}
public class Repository : IRepository
{
protected readonly IDatabaseContext Context;
public Repository(IDatabaseContext context)
{
Context = context;
}
}
public class EventComponent : IEventComponent
{
private readonly IRepository _repository;
private EventComponent(IRepository repo)
{
_repository = repo;
}
}
Я использую .PropertiesAutoWired()
, который дает следующее определение, и, насколько я понимаю, должен знать, что такое IRepository
, поскольку он зарегистрирован в контейнере.
Настройте компонент таким образом, чтобы любые свойства, типы которых зарегистрированы в контейнере, были связаны с экземплярами соответствующей службы.
Я что-то не так делаю?