ASP.NET Core 中是否需要注册传递依赖?

问题描述 投票:0回答:1

我正在创建我的应用程序,现在我无法理解是否有必要在 Asp.net Core 中注册服务。我知道需要注册服务来在接口及其实现之间建立连接,因此我们可以在控制器构造函数中获取这些接口的实例,但是控制器中未使用的接口和服务呢?

我希望收到有关我的问题的任何信息。

c# asp.net-mvc asp.net-core asp.net-core-mvc
1个回答
0
投票

如果您还有控制器正在使用的其他服务,您还可以将这些服务注册到 ASP.NET Core 服务集合。这也将自动连接这些服务。 假设您有一个依赖于某个服务的控制器:

public MyController(IFoo foo)

您可以将 
IFoo

实现注册到服务集合中,正如 OP 中已经建议的:

builder.Services.AddSingleton<IFoo, Foo>();

但是,如果 
Foo

实现依赖于另一个服务,会发生什么?

public Foo(IBar bar)

您也可以注册:

builder.Services.AddSingleton<IBar, Bar>();

如果不这样做,系统将不知道如何创建 
IBar

对象,这意味着它无法创建

IFoo
对象,这意味着它无法创建
MyController
对象。
    

© www.soinside.com 2019 - 2024. All rights reserved.