问题描述
我已经创建了一个基于(.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 (将#修改为@)