Asp.net 如何注册通用存储库的依赖关系?

Asp.net 如何注册通用存储库的依赖关系?,asp.net,repository,inversion-of-control,castle-windsor,aspnetboilerplate,Asp.net,Repository,Inversion Of Control,Castle Windsor,Aspnetboilerplate,我拥有以下存储库库: public class FakeRepositoryBase<TEntity, TPrimaryKey> : AbpRepositoryBase<TEntity, TPrimaryKey> where TEntity : class, IEntity<TPrimaryKey> {...} 然后我声明AppService: class DocumentAppService : ApplicationService, IDocum

我拥有以下存储库库:

public class FakeRepositoryBase<TEntity, TPrimaryKey> : AbpRepositoryBase<TEntity, TPrimaryKey>
    where TEntity : class, IEntity<TPrimaryKey>
{...}
然后我声明AppService:

class DocumentAppService : ApplicationService, IDocumentAppService
{
    private readonly IRepository<Document> _documentRepository;
    private readonly IObjectMapper _objectMapper;

    public DocumentAppService(
        IRepository<Document> documentRepository,
        IObjectMapper objectMapper)
    {
        _documentRepository = documentRepository;
        _objectMapper = objectMapper;
    }

    // AppService methods
}
调用任何API方法后,出现错误:

{
  "message": "An error has occurred.",
  "exceptionMessage": "ComponentActivator: could not proxy Abp.WebApi.Controllers.Dynamic.DynamicApiController`1[[DERC.ApplicationServices.Interfaces.IDocumentAppService, DERC.Application, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]",
  "exceptionType": "Castle.MicroKernel.ComponentActivator.ComponentActivatorException",
  "stackTrace": "   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context, Burden burden)\r\n   в Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context, Boolean trackedExternally)\r\n   в Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context, IReleasePolicy releasePolicy)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)\r\n   в Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)\r\n   в Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service, IDictionary additionalArguments, IReleasePolicy policy)\r\n   в Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(Type service, IDictionary arguments, IReleasePolicy policy)\r\n   в Castle.MicroKernel.DefaultKernel.Resolve(Type service, IDictionary arguments)\r\n   в Castle.Windsor.WindsorContainer.Resolve(Type service)\r\n   в Abp.Dependency.IocManager.Resolve(Type type)\r\n   в Abp.Dependency.IocResolverExtensions.ResolveAsDisposable[T](IIocResolver iocResolver, Type type)\r\n   в Abp.WebApi.Controllers.AbpApiControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)\r\n   в System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)\r\n   в System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()",
  "innerException": {
    "message": "An error has occurred.",
    "exceptionMessage": "Can't create component 'DERC.ApplicationServices.DocumentAppService' as it has dependencies to be satisfied.\r\n\r\n'DERC.ApplicationServices.DocumentAppService' is waiting for the following dependencies:\r\n- Service 'Abp.Domain.Repositories.IRepository`1[[DERC.Entities.Document, DERC.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' which was not registered.\r\n",
    "exceptionType": "Castle.MicroKernel.Handlers.HandlerException",
    "stackTrace": "   в Castle.MicroKernel.Handlers.DefaultHandler.AssertNotWaitingForDependency()\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)\r\n   в Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)\r\n   в Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernelByType(CreationContext context, ComponentModel model, DependencyModel dependency)\r\n   в Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernel(CreationContext context, ComponentModel model, DependencyModel dependency)\r\n   в Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveCore(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency)\r\n   в Castle.MicroKernel.Resolvers.DefaultDependencyResolver.Resolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateConstructorArguments(ConstructorCandidate constructor, CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context, Burden burden)\r\n   в Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context, Boolean trackedExternally)\r\n   в Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context, IReleasePolicy releasePolicy)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)\r\n   в Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)\r\n   в Castle.Core.InterceptorReference.Castle.MicroKernel.IReference<Castle.DynamicProxy.IInterceptor>.Resolve(IKernel kernel, CreationContext context)\r\n   в Castle.Windsor.Proxy.AbstractProxyFactory.ObtainInterceptors(IKernel kernel, ComponentModel model, CreationContext context)\r\n   в Castle.Windsor.Proxy.DefaultProxyFactory.Create(IKernel kernel, Object target, ComponentModel model, CreationContext context, Object[] constructorArguments)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)"
  }
}
{
“消息”:“发生错误。”,
“exceptionMessage”:“ComponentActivator:无法代理Abp.WebApi.Controllers.Dynamic.DynamicCapicController`1[[DERC.ApplicationServices.Interfaces.IDocumentAppService,DERC.Application,Version=1.0.0,Culture=neutral,PublicKeyToken=null]”,
“exceptionType”:“Castle.MicroKernel.ComponentActivator.ComponentActivatorException”,
“stackTrace”:“V Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext上下文,ConstructorCandidate构造函数,Object[]参数)\r\n V Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instance(CreationContext上下文)\r\nöCastle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext上下文)\r\nöCastle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext上下文,负担)\r\nöCastle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext上下文,外部跟踪布尔值)\r\nöCastle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext上下文,IReleasePolicy releasePolicy)\r\nöCastle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext上下文,布尔值requiresDecommission,布尔值instanceRequired,负担和负担)\r\nöCastle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext上下文,需要布尔实例)\r\nöCastle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext上下文)\r\nöCastle.MicroKernel.DefaultKernel.ResolveComponent(IHandler处理程序,类型服务,IDictionary附加参数,IRelesePolicy策略)\r\nöCastle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(类型服务,IDictionary参数,IReleasePolicy策略)\r\nöCastle.MicroKernel.DefaultKernel.Resolve(类型服务,IDictionary参数)\r\nöCastle.Windsor.WindsorContainer.Resolve(类型服务)\r\nöAbp.Dependency.IocManager.Resolve(类型)\r\nöAbp.Dependency.IocResolverExtensions.ResolvasDisposable[T](IIocResolver-iocResolver,类型类型)\r\nöAbp.WebApi.Controllers.AbpApiControllerActivator.Create(HttpRequestMessage请求,HttpControllerDescriptor controllerDescriptor,类型controllerType)\r\nöSystem.Web.Http.controllerDescriptor.HttpControllerDescriptor.CreateController(HttpRequestMessage请求)\r\nöSystem.Web.Http.Dispatcher.HttpControllerDispatcher.d_u15.MoveNext()“,
“内部异常”:{
“消息”:“发生错误。”,
“exceptionMessage”:“无法创建组件'DERC.ApplicationServices.DocumentAppService',因为它有要满足的依赖项。\r\n\r\n'DERC.ApplicationServices.DocumentAppService'正在等待以下依赖项:\r\n-Service'Abp.Domain.Repositories.iRepositorie`1”[[DERC.Entities.Document,DERC.Core,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]'未注册。\r\n“,
“exceptionType”:“Castle.MicroKernel.Handlers.HandlerException”,
“stackTrace”:“V Castle.MicroKernel.Handlers.DefaultHandler.AssertNotWaitingForDependence()\r\n V Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext上下文,布尔要求解除委托,布尔要求实例,负担和负担)\r\n V Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext上下文,需要布尔实例)\r\nöCastle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext上下文)\r\nöCastle.MicroKernel.Resolver.DefaultDependencyResolver.ResolveFromKernelByType(CreationContext上下文,组件模型,DependencyModel依赖)\r\nöCastle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernel(CreationContext上下文、ComponentModel模型、DependencyModel依赖项)\r\nöCastle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveCore(CreationContext上下文,ISubDependencyResolver上下文HandlerResolver,ComponentModel模型,DependencyModel依赖项)\r\nöCastle.MicroKernel.Resolver.DefaultDependencyResolver.Resolve(CreationContext上下文,ISubDependencyResolver上下文HandlerResolver,ComponentModel,DependencyModel依赖项)\r\nöCastle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateConstructorArguments(ConstructorCandidate构造函数,CreationContext上下文)\r\nöCastle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instance(CreationContext上下文)\r\nöCastle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext上下文)\r\nöCastle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext上下文,负担)\r\nöCastle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext上下文,外部跟踪布尔值)\r\nöCastle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext上下文,IReleasePolicy releasePolicy)\r\nöCastle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext上下文,布尔值requiresDecommission,布尔值instanceRequired,负担和负担)\r\nöCastle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext上下文,需要布尔实例)\r\nöCastle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext上下文)\r\nöCastle.Core.InterceptorReference.Castle.MicroKernel.IReference.Resolve(IKernel内核,CreationContext上下文)\r\nöCastle.Windsor.Proxy.AbstractProxyFactory.ActainInterceptors(IKernel内核、组件模型、CreationContext上下文)\r\nöCastle.Windsor.Proxy.DefaultProxyFactory.Create(IKernel内核、对象目标、组件模型、CreationContext上下文、对象[]构造函数参数)\r\nöCastle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationCo
class DocumentAppService : ApplicationService, IDocumentAppService
{
    private readonly IRepository<Document> _documentRepository;
    private readonly IObjectMapper _objectMapper;

    public DocumentAppService(
        IRepository<Document> documentRepository,
        IObjectMapper objectMapper)
    {
        _documentRepository = documentRepository;
        _objectMapper = objectMapper;
    }

    // AppService methods
}
[DependsOn(
        typeof(AbpWebMvcModule),
        typeof(DERCApplicationModule), 
        typeof(DERCWebApiModule),
        typeof(DERCFakeDALModule))]
public class DERCWebModule : AbpModule
{
  "message": "An error has occurred.",
  "exceptionMessage": "ComponentActivator: could not proxy Abp.WebApi.Controllers.Dynamic.DynamicApiController`1[[DERC.ApplicationServices.Interfaces.IDocumentAppService, DERC.Application, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]",
  "exceptionType": "Castle.MicroKernel.ComponentActivator.ComponentActivatorException",
  "stackTrace": "   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context, Burden burden)\r\n   в Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context, Boolean trackedExternally)\r\n   в Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context, IReleasePolicy releasePolicy)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)\r\n   в Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)\r\n   в Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service, IDictionary additionalArguments, IReleasePolicy policy)\r\n   в Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(Type service, IDictionary arguments, IReleasePolicy policy)\r\n   в Castle.MicroKernel.DefaultKernel.Resolve(Type service, IDictionary arguments)\r\n   в Castle.Windsor.WindsorContainer.Resolve(Type service)\r\n   в Abp.Dependency.IocManager.Resolve(Type type)\r\n   в Abp.Dependency.IocResolverExtensions.ResolveAsDisposable[T](IIocResolver iocResolver, Type type)\r\n   в Abp.WebApi.Controllers.AbpApiControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)\r\n   в System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)\r\n   в System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()",
  "innerException": {
    "message": "An error has occurred.",
    "exceptionMessage": "Can't create component 'DERC.ApplicationServices.DocumentAppService' as it has dependencies to be satisfied.\r\n\r\n'DERC.ApplicationServices.DocumentAppService' is waiting for the following dependencies:\r\n- Service 'Abp.Domain.Repositories.IRepository`1[[DERC.Entities.Document, DERC.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' which was not registered.\r\n",
    "exceptionType": "Castle.MicroKernel.Handlers.HandlerException",
    "stackTrace": "   в Castle.MicroKernel.Handlers.DefaultHandler.AssertNotWaitingForDependency()\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)\r\n   в Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)\r\n   в Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernelByType(CreationContext context, ComponentModel model, DependencyModel dependency)\r\n   в Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernel(CreationContext context, ComponentModel model, DependencyModel dependency)\r\n   в Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveCore(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency)\r\n   в Castle.MicroKernel.Resolvers.DefaultDependencyResolver.Resolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateConstructorArguments(ConstructorCandidate constructor, CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)\r\n   в Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context, Burden burden)\r\n   в Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context, Boolean trackedExternally)\r\n   в Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context, IReleasePolicy releasePolicy)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)\r\n   в Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)\r\n   в Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)\r\n   в Castle.Core.InterceptorReference.Castle.MicroKernel.IReference<Castle.DynamicProxy.IInterceptor>.Resolve(IKernel kernel, CreationContext context)\r\n   в Castle.Windsor.Proxy.AbstractProxyFactory.ObtainInterceptors(IKernel kernel, ComponentModel model, CreationContext context)\r\n   в Castle.Windsor.Proxy.DefaultProxyFactory.Create(IKernel kernel, Object target, ComponentModel model, CreationContext context, Object[] constructorArguments)\r\n   в Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)"
  }
}
        //Transient
        context.IocManager.IocContainer.Register(
            Classes.FromAssembly(context.Assembly)
                .IncludeNonPublicTypes()
                .BasedOn<ITransientDependency>()
                .If(type => !type.GetTypeInfo().IsGenericTypeDefinition)
                .WithService.Self()
                .WithService.DefaultInterfaces()
                .LifestyleTransient()
            );

        //Singleton
        context.IocManager.IocContainer.Register(
            Classes.FromAssembly(context.Assembly)
                .IncludeNonPublicTypes()
                .BasedOn<ISingletonDependency>()
                .If(type => !type.GetTypeInfo().IsGenericTypeDefinition)
                .WithService.Self()
                .WithService.DefaultInterfaces()
                .LifestyleSingleton()
            );

        //Windsor Interceptors
        context.IocManager.IocContainer.Register(
            Classes.FromAssembly(context.Assembly)
                .IncludeNonPublicTypes()
                .BasedOn<IInterceptor>()
                .If(type => !type.GetTypeInfo().IsGenericTypeDefinition)
                .WithService.Self()
                .LifestyleTransient()
            );
IocManager.IocContainer.Register(Component.For(typeof(ITest<,>)).ImplementedBy(typeof(Test<,>)));