Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c#依赖注入

作者:★执着唯她   发布日期:2026-03-31   浏览:54

using Microsoft.Extensions.DependencyInjection;

// 定义一个接口
public interface IMessageService
{
    void SendMessage(string message);
}

// 实现接口
public class EmailMessageService : IMessageService
{
    public void SendMessage(string message)
    {
        Console.WriteLine($"Sending email: {message}");
    }
}

// 定义一个使用IMessageService的服务
public class NotificationService
{
    private readonly IMessageService _messageService;

    // 构造函数注入
    public NotificationService(IMessageService messageService)
    {
        _messageService = messageService;
    }

    public void SendNotification(string message)
    {
        _messageService.SendMessage(message);
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 创建服务容器
        var serviceCollection = new ServiceCollection();

        // 注册依赖
        serviceCollection.AddScoped<IMessageService, EmailMessageService>();

        // 构建服务提供者
        var serviceProvider = serviceCollection.BuildServiceProvider();

        // 解析服务
        var notificationService = serviceProvider.GetRequiredService<NotificationService>();

        // 使用服务
        notificationService.SendNotification("Hello, World!");
    }
}

解释说明

  1. 定义接口和实现类

    • IMessageService 是一个接口,定义了发送消息的方法。
    • EmailMessageService 是该接口的一个实现,具体实现了发送邮件的功能。
  2. 构造函数注入

    • NotificationService 类通过构造函数注入 IMessageService 依赖。这样可以确保在创建 NotificationService 实例时,依赖项已经准备好。
  3. 配置依赖注入容器

    • 使用 ServiceCollection 来注册依赖关系。这里我们将 IMessageService 的实现注册为 EmailMessageService
    • 使用 BuildServiceProvider 方法构建服务提供者。
  4. 解析并使用服务

    • 使用 serviceProvider.GetRequiredService<NotificationService>() 来获取 NotificationService 的实例,并调用其方法来发送通知。

这种方式使得代码更加模块化、易于测试和维护。

上一篇:delegate c#

下一篇:c# 计时

大家都在看

c# 二进制

c# 创建目录

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站