我正在研究EF Core上的通用存储库模式,我在解决我的存储库对Asp.Net Core的依赖性时遇到了问题。使用Unity我能解决这里的依赖是我的代码:
使用Unity
//here is the Line I Cant Resolve
.RegisterType<IRepositoryAsync<Movie>, Repository<Movie>>()
.RegisterType<IMovieService, MovieService>()
Asp.Net Core
services.AddScoped<IRepositoryAsync<Movie>, Repository<Movie>>();
services.AddTransient<IMovieService, MovieService>();
我收到错误
InvalidOperationException: Unable to resolve service for type 'Repository.Pattern.DataContext.IDataContextAsync' while attempting to activate 'Repository.Pattern.Core.Repository`1[Sample.Models.Movie]'.
任何人都可以清楚地了解Native Dependency Injection如何在Asp.Net Core上运行
答案 0 :(得分:1)
Microsoft.Extensions.DependencyInjection
使用构造函数注入将依赖项注入已解析的服务。您的服务定位器需要知道如何构造这些依赖项以生成所请求的服务。
非常基本的是,如果您想使用IMyService
的默认构造函数解析IMyService(IMyOtherService otherService)
,您还需要注册IMyOtherService
。
在您的示例中,您需要注册Repository.Pattern.DataContext.IDataContextAsync
才能解析IRepositoryAsync<Movie>
。
综合文档在https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection