我用DI注入的服务有很多方法。有没有办法让我很容易找到这些?
c#
我正在使用 Microsoft.Extensions.DependencyInjection 版本 5.0.1 nuget 包
这是一个例子。它是一个 UtilityService,具有大量(超过 100 个)方法:
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
实用类虽然是一个坏习惯,但可能是代码异味。它们也违反了单一职责原则,低内聚性和可读性。
我确实建议您创建许多服务,因为它们不花钱,而且它们是可发现的并且具有凝聚力的功能。
如果您在其他地方(其他项目)需要它们,您可以很容易地将它们放在那里。