微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我用 DI 注入的服务有很多方法有没有办法让我很容易找到这些?

如何解决我用 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,IViewtilities

尽管类是一个坏习惯,但可能是代码异味。它们也违反了单一职责原则,低内聚性和可读性。

我确实建议您创建许多服务,因为它们不需要任何成本,而且它们是可发现的并且具有聚合功能。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。