没有为命令处理程序调用注入的构造函数

问题描述

我已经创建了一个基于(.NET Core)Web API的应用程序。该应用程序使用MediatR包来处理从API调用的命令。在这些命令处理程序中,我尝试使用SimpleInjector包注入存储库的实例,但是我不明白为什么未调用注入的构造函数。 在我的 StartUp.cs 中,

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest);
    services.AddDbContext<PersonDbContext>(
        item => item.UsesqlServer(Configuration.GetConnectionString("myconn")));
    services.AddResponseCaching();
  
    container.Options.DefaultScopedLifestyle =
        new SimpleInjector.Lifestyles.AsyncScopedLifestyle();
    container.Register<PersonDbContext>(() => {
        var options = (new DbContextOptionsBuilder()).UsesqlServer(
            Configuration.GetConnectionString("myconn"));
         return new PersonDbContext(options.Options);
    },Lifestyle.Scoped);
    container.Register<IRepository<Person>,PersonRepository>(Lifestyle.Scoped);
    var config = new AutoMapperConfiguration().Configure(container);      
    container.Register<IRequestHandler<GetAllPersons,IEnumerable<PersonDTO>>,GetAllPersonsHandler>();       
    container.Verify();
    container.Verify();
    services.UseSimpleInjectorAspNetRequestscoping(container);
    services.AddMediatR(typeof(Startup));
}

在命令处理程序中 GetAllPersonsHandler.cs

public GetAllPersonsHandler(
    AutoMapper.IMapper mapper,IRepository<Person> personRepository)
{
    _personRepository = personRepository;
    _mapper = mapper;
}

但是上述构造函数没有被调解器实例调用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...