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 關注
- 167 瀏覽
添加回答
舉報