我创建了一个.NETCoreMVC应用程序,并使用依赖注入和存储库模式将存储库注入我的控制器。然而,我得到一个错误:
无法解析类型WebApplication1.Data.BloggerRepository的服务,而试图激活WebApplication1.Controllers.BlogController。
存储 库:
public interface IBloggerRepository { ... }
public class BloggerRepository : IBloggerRepository { ... }
控制器:
public class BlogController : Controller
{
private readonly IBloggerRepository _repository;
public BlogController(BloggerRepository repository)
{
_repository = repository;
}
public IActionResult Index() { ... }
}
启动. cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddScoped<IBloggerRepository, BloggerRepository>();
}
我不知道我做错了什么。有什么想法吗?
在我的例子中,我试图对一个需要构造函数参数的对象进行依赖注入。在这种情况下,在启动期间,我只提供了配置文件中的参数,例如:
var config = Configuration.GetSection("subservice").Get<SubServiceConfig>();
services.AddScoped<ISubService>(provider => new SubService(config.value1, config.value2));
我遇到了这个问题,因为在依赖注入设置中,我缺少存储库的依赖项,该依赖项是控制器的依赖项:
services.AddScoped<IDependencyOne, DependencyOne>(); <-- I was missing this line!
services.AddScoped<IDependencyTwoThatIsDependentOnDependencyOne, DependencyTwoThatIsDependentOnDependencyOne>();
要分解错误消息:
试图激活WebApplication1.Controllers.BlogController时,无法解析类型WebApplication1.Data.BloggerRepository的服务。
也就是说,您的应用程序正在尝试创建BlogController
的实例,但它不知道如何创建一个BloggerRepository
现在看看你的创业公司:
services.AddScoped<IBloggerRepository, BloggerRepository>();
也就是说,无论何时需要
IBloggerRepository
,都要创建一个BloggerRepository并将其传入。
然而,您的控制器类要求具体的类
BloggerRepository
,依赖注入容器不知道直接要求时该做什么。
我猜你只是打错了一个字,但是很常见的一个。因此,简单的解决方法是更改您的控制器,以接受DI容器知道如何处理的东西,在本例中是接口:
public BlogController(IBloggerRepository repository)
// ^
// Add this!
{
_repository = repository;
}
注意,一些对象有它们自己的自定义注册方式,这在使用外部Nuget包时更常见,所以阅读它们的文档是值得的。例如,如果你收到一条信息说:
无法解析“Microsoft.AspNetCore.Http”类型的服务。IHttpContextAccessor“。。。
然后,您将使用该库提供的自定义扩展方法修复该方法,该方法是:
services.AddHttpContextAccessor();
对于其他软件包,请务必阅读文档。
我创建了一个。NET核心MVC应用程序,并使用依赖项注入和存储库模式将存储库注入控制器。但是,我得到一个错误: 无法解析类型WebApplication ation1的服务。数据。BloggerRepository'同时尝试激活'WebApplication 1.控制器。BlogController'. 型号(Blog.cs) DbContext(BloggingContext.cs) 存储库(I
我正在尝试创建ASP。NET核心应用程序使用通用存储库模式,使用实体框架和服务层。然而,每当我启动项目时,都会遇到以下错误: 无法解析“GameSource”类型的服务。数据存储库。GameRepository“正在尝试激活”GameSource。服务。游戏服务'。 游戏控制器。反恐精英: 游戏服务。反恐精英: 游戏存储库。反恐精英: BaseRepository。反恐精英: GameSource
我正在创建viewcomponents,下面是我的全部代码。。但当我调用这个viewcomponent时,我得到如下错误。。所以,任何人都可以帮助我解决这个问题,并向我解释到底是什么问题。 错误是: InvalidOperationException:无法解析“Perfulmestore”类型的服务。数据模型。ShoppingCart正在尝试激活香水商店。视图组件。ShoppingCartSumm
在我的ASP. NET Core应用程序中,我收到以下错误: 无效操作异常:在尝试激活“城市”时无法解析类型“城市”的服务。模型。IRepository。控制器。HomeController。 我是家庭控制器,我试图将城市的getter传递给视图,如下所示: 我有一个文件存储库。cs包含一个接口及其实现,如下所示: 我的启动类包含从模板生成的默认代码。我做了任何更改:
我使用泛型使代码可重用,并利用依赖项注入。 我有两个接口:DataParserImplementation和ObjectImplementation。我有实现每个的类:SalesRepbyId实现DataParserImpl(它将数据解析为对象并将这些对象放入集合)。SalesRep实现Objectimpl(它是特定数据集的对象)。 我试图得到它,这样我就可以选择在我的SalesRepbyId类中
我对Android的Gradle构建有问题。我尝试了很多方法来解决这个问题,但没有什么不起作用。我需要帮助。 Gradle版本:4.4 Gradle插件:3.0.1 错误:无法解析app@serverDebug /compileClasspath的依赖关系:无法解析项目:vksdk_library。 错误:无法解析“”的依存关系:app@mockDebugAndroidTest/compileCl