C# 通用接口、实现和依赖注入-实现类型可以';不能转换为服务类型

C# 通用接口、实现和依赖注入-实现类型可以';不能转换为服务类型,c#,asp.net-core,generics,dependency-injection,blazor,C#,Asp.net Core,Generics,Dependency Injection,Blazor,我有以下泛型(为了简洁起见,删除了代码,我认为这个问题没有必要): /##实体接口 公共界面的开放性 { TPrimaryKey Id{get;set;} } //##实体实现 公共类实体:IEntity{…} 公共类实体:实体{…} //##回购接口 公共接口IAsyncrompository 其中tenty:Entity{…} 公共接口iSyncRespository:iSyncRespository 其中tenty:Entity{…} //##回购实施 公共类异步存储库 :IAsyncRe

我有以下泛型(为了简洁起见,删除了代码,我认为这个问题没有必要):

/##实体接口
公共界面的开放性
{
TPrimaryKey Id{get;set;}
}
//##实体实现
公共类实体:IEntity{…}
公共类实体:实体{…}
//##回购接口
公共接口IAsyncrompository
其中tenty:Entity{…}
公共接口iSyncRespository:iSyncRespository
其中tenty:Entity{…}
//##回购实施
公共类异步存储库
:IAsyncRepository
其中tenty:Entity{…}
公共类AsyncRepository:AsyncRepository
其中tenty:Entity{…}
然后,我将依赖项注入
AsyncRepositories
,如下所示:

services.addScope(typeof(iasyncrespository)、typeof(AsyncRepository));
addScope(typeof(IAsyncRepository),typeof(AsyncRepository));
但是,当我尝试使用
@injectiasyncrecepository accountRepository
将内容注入到我的
razor
页面时,我收到一个错误消息:

System.ArgumentException:无法将实现类型“AsyncRepository`1[Account]”转换为服务类型“IAsyncRespository`1[Account]”

但是,如果我将最终的
AsyncRepository
类的声明更改如下,那么它就可以工作了:

公共类AsyncRepository:IAsyncRespository
其中tenty:实体
不幸的是,我现在有代码重复,因为我需要重新实现接口


有什么办法可以解决这个问题吗?

您的存储库必须实现
IAsyncRepository
:使用以下内容更新您的
AsyncRepository
声明:

公共类AsyncRepository:AsyncRepository,
综合征
其中tenty:Entity{…}

有效吗:
services.addScope(typeof(iasyncrespository)、typeof(AsyncRepository))?@aguafrommars不,这也不起作用。如果我添加您建议的行,应用程序将在
Main
函数期间崩溃,错误与上述相同。并且:
public class AsyncRepository:AsyncRepository,iasyncRespository where tenty:Entity{…}
?@aguafrommars Aha,确实有效!!