📜  注册所有服务 microsoft .net 核心依赖注入容器 - C# (1)

📅  最后修改于: 2023-12-03 15:26:58.120000             🧑  作者: Mango

注册所有服务 Microsoft .NET 核心依赖注入容器 - C#

在开发应用程序时,我们通常需要使用多个服务。为了将这些服务注入到控制器或其他部件中,我们使用依赖注入(DI)容器。在 .NET Core 中,Microsoft 为我们提供了自己的 DI 容器,称为“Microsoft.Extensions.DependencyInjection”。

这个容器非常强大,可以管理应用程序中的所有服务。本文将介绍如何使用该容器来注册所有服务。

安装必需的 NuGet 包

在开始前,我们需要安装 Microsoft.Extensions.DependencyInjection 包。可以在 NuGet 包管理器控制台中输入以下命令:

Install-Package Microsoft.Extensions.DependencyInjection

或者通过 Visual Studio 中的 NuGet 包管理界面搜索并安装。

创建服务类

为了说明如何注册服务,我们将创建一个简单的服务类:

public interface IMyService
{
    void DoSomething();
}

public class MyService : IMyService
{
    public void DoSomething()
    {
        Console.WriteLine("MyService.DoSomething called.");
    }
}
创建依赖注入容器

现在我们已经有了一个服务,接下来是将该服务注册到 DI 容器中。我们将在 Program 类中注册服务:

using Microsoft.Extensions.DependencyInjection;
using System;

class Program
{
    static void Main(string[] args)
    {
        var services = new ServiceCollection();

        // 注册服务
        services.AddSingleton<IMyService, MyService>();

        // 创建服务提供程序
        var serviceProvider = services.BuildServiceProvider();

        // 获取服务
        var myService = serviceProvider.GetService<IMyService>();

        myService.DoSomething();
    }
}

在代码中,我们创建了一个 ServiceCollection 对象,该对象用于将服务添加到 DI 容器中。AddSingleton 方法可以将服务注册为单例服务。我们还可以使用 AddTransient 方法将服务注册为瞬时服务,或使用 AddScoped 方法将服务注册为范围服务。

在将所有服务添加到 ServiceCollection 后,我们使用 BuildServiceProvider 方法创建实际的服务提供程序。通过从该服务提供程序中获取服务,我们可以开始使用服务。

使用批量注册方式

如果您的应用程序中有很多服务,手动注册这些服务可能会很麻烦。为了简化这个过程,我们可以使用批量注册方式:

var services = new ServiceCollection()
    .AddTransient<IMyService, MyService>()
    .AddTransient<IDatabaseService, DatabaseService>()
    .AddScoped<ILogger, Logger>();

在这个例子中,我们使用 AddTransient、AddScoped 和 AddSingleton 方法分别将服务注册为瞬时、范围和单例服务。

总结

在本文中,我们介绍了如何使用 Microsoft.Extensions.DependencyInjection 中的依赖注入容器来注册所有服务。我们还创建了一个简单的服务类,并演示了如何将该服务添加到 DI 容器中,并从容器中获取服务实例。希望本文可以帮助您更好地使用 .NET Core 中的依赖注入容器。