我用DI注入的服务有很多方法.有什么办法能让我更容易找到这些东西吗?



我使用的是Microsoft.Extensions.DependencyInjection 5.0.1版本的nuget包

这里有一个例子。它是一个具有大量(超过100)方法的UtilityService:

public partial class UtilsService : IUtilsService
{
private IDatabaseService _databaseService;
private IConfigService _configService;
public UtilsService(IDatabaseService databaseService, IConfigService configService)
{
_databaseService = databaseService;
_configService = configService;
}
public delegate void OnCompleteCallBack(object result, bool status);
public string SetTimeHeader(TIME setting)
{
///
}
public string SetTimeBack()
{
///
}
public async Task PopulateMetrics()
{
///
}

方法可以分为不同的组,如:

Time utilities
Statistics utilities
View utilities
....

我意识到我可以继续为每一个服务创建越来越多的服务,但这样做的话,我的应用程序最终会有很多只有实用程序方法的服务。

是否有一些方法,我可以有一个UtilityService,然后有这些方法分组?

您可以创建多个实用程序接口:

ITimeUtilities
IStatisticstilities
IViewtilities

和实现如下:

public partial class UtilsService : ITimeUtilities, IStatisticstilities, IViewtilities

然后你可以通过使用相同的具体类将适当的接口注入给需要它的人。

你也可以将接口声明为:

public interface IUtilsService : ITimeUtilities, IStatisticstilities, IViewtilities

但是,utily类是一个坏习惯,可能会产生代码气味。它们违反了单一职责原则,而且内聚性和可读性都很低。

我建议你创建更多的服务,因为它们不需要任何成本,它们是可发现的,也是组内聚的功能。

如果你在其他地方(其他项目)需要它们,你可以很容易地在那里得到它们。

最新更新