我正在创建我的应用程序,现在我在理解是否有必要在ASP.NET Core中注册服务时遇到了问题.我知道在接口及其实现之间建立连接需要服务注册,这样我们就可以在控制器构造函数中获得这些接口的实例,但是控制器中不使用的接口和服务怎么办?

我希望收到关于我的问题的任何信息.

推荐答案

如果控制器正在使用transitively个其他服务,还可以向ASP.NET核心服务集合注册这些服务.这也将自动连接这些服务.

假设您有一个依赖于服务的控制器:

public MyController(IFoo foo)

您将在服务集合中注册IFoo实现,正如在操作中所建议的:

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

然而,如果Foo的实现依赖于另一个服务,会发生什么呢?

public Foo(IBar bar)

您也可以注册:

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

如果不这样做,系统将不知道如何创建IBar对象,这意味着它无法创建IFoo对象,这意味着它无法创建MyController对象.

Csharp相关问答推荐

REST API端点中异步后台代码执行的类型

MAUI查询参数单一字符串项将不起作用

如何定义EFCore中的多个穿透

从应用程序图API调用访问所有者字段

具有单一导航属性的EF核心一对多关系

使用泛型可空类实现接口

C# CompareTo()和Compare()可以返回除-1和1以外的整数吗?

如果设置了另一个属性,则Newtonsoft JSON忽略属性

在C#中,非静态接口方法的抽象和虚拟是冗余的吗?

是否由DI容器自动处理由ActivatorUilties.CreateInstance()创建的服务?

C#按名称从类获取属性值类型<;t>;,我需要反射吗?

在.NET8中如何反序列化为私有字段?

RCL在毛伊岛应用程序和Blazor服务器应用程序.Net 8.0中使用页面

try 创建一个C#程序,该程序使用自动实现的属性、覆盖ToString()并使用子类

根据运行时值获取泛型类型的字典

默认架构不存在EF核心迁移

C#如何替换两个XML元素值?

从实例扩展中调用类型的扩展方法

如何在C#中加载证书包?

算法:基于相同序列的数字替换