2 回答

TA贡献1799条经验 获得超9个赞
1. IQueryService<SomeTypeDto>
Castle.MicroKernel.ComponentNotFoundException: 没有支持服务 AbpCompanyName.AbpProjectName.IGenerics.IQueryService`1[[AbpCompanyName.AbpProjectName.SomeEntitiesDto.SomeTypeDto, AbpCompanyName.AbpProjectName.Application, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 的组件]] 被找到
要将具体类注册到通用接口,请使用.WithService.Base().
为了与兼容1RegisterAssemblyByConvention,配置一个唯一的名称。
public override void Initialize()
{
var thisAssembly = ...
IocManager.RegisterAssemblyByConvention(thisAssembly);
IocManager.IocContainer.Register(
Classes.FromAssembly(thisAssembly)
.BasedOn(typeof(IQueryService<>))
.WithService.Base()
.Configure(configurer => configurer.Named(Guid.NewGuid().ToString())) // Add this
);
// ...
}
1如果您的具体类实现了 ASP.NET 样板ITransientDependency,则默认名称用于在.WithService.Self()内部注册该类RegisterAssemblyByConvention。
2. IRepository<SomeType>
Castle.MicroKernel.Handlers.HandlerException:无法创建组件“AbpCompanyName.AbpProjectName.SomeEntityService.SomeTypeService”,因为它具有需要满足的依赖项。
'AbpCompanyName.AbpProjectName.SomeEntityService.SomeTypeService' 正在等待以下依赖项:
- 服务 'Abp.Domain.Repositories.IRepository`1[[AbpCompanyName.AbpProjectName.SomeEntities.SomeType, AbpCompanyName.AbpProjectName.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' 未注册。
要使用 ASP.NET Boilerplate 存储库,请定义一个公共DbSet。
public class AbpProjectNameDbContext : ...
{
/* Define a DbSet for each entity of the application */
// DbSet<SomeType> SomeEntities { get; set; } // Remove this
public DbSet<SomeType> SomeEntities { get; set; } // Add this
// ...
}

TA贡献1951条经验 获得超3个赞
如果您的目标是在一个表达式中注册泛型的所有各种实现,那么IQueryService<T>您很可能会这样做
container.Register(
Classes.FromThisAssembly()
.BasedOn(typeof(IQueryService<>))
.WithServiceBase()
);
- 2 回答
- 0 关注
- 142 浏览
添加回答
举报