首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET中的依赖注入带有示例?

依赖注入(Dependency Injection,简称DI)是一种软件设计模式,它允许将依赖关系从一个类或方法中解耦,从而使代码更加模块化、可测试和可维护。在.NET中,依赖注入通常通过使用第三方库(如Autofac、Ninject或Microsoft.Extensions.DependencyInjection)来实现。

以下是一个简单的依赖注入示例:

  1. 首先,定义一个接口和它的实现类:
代码语言:csharp
复制
public interface ILogger
{
    void Log(string message);
}

public class ConsoleLogger : ILogger
{
    public void Log(string message)
    {
        Console.WriteLine($"Logged: {message}");
    }
}
  1. 创建一个类,该类依赖于ILogger接口:
代码语言:csharp
复制
public class MyApp
{
    private readonly ILogger _logger;

    public MyApp(ILogger logger)
    {
        _logger = logger;
    }

    public void Run()
    {
        _logger.Log("MyApp is running.");
    }
}
  1. 使用依赖注入容器注册依赖关系并解析对象:
代码语言:csharp
复制
using Microsoft.Extensions.DependencyInjection;

public class Program
{
    public static void Main(string[] args)
    {
        // 创建一个服务集合并注册依赖关系
        var serviceCollection = new ServiceCollection();
        serviceCollection.AddSingleton<ILogger, ConsoleLogger>();
        serviceCollection.AddSingleton<MyApp>();

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

        // 解析MyApp对象并运行
        var myApp = serviceProvider.GetService<MyApp>();
        myApp.Run();
    }
}

在这个示例中,我们通过Microsoft.Extensions.DependencyInjection库实现了依赖注入。首先,我们创建了一个服务集合并注册了ILogger和MyApp类的实例。然后,我们创建了一个服务提供者,它可以根据我们的注册来解析依赖关系。最后,我们解析了一个MyApp实例并调用了它的Run方法。

总之,依赖注入是一种有效的方法,可以帮助我们编写更加模块化、可测试和可维护的代码。在.NET中,我们可以使用第三方库来实现依赖注入,从而降低代码之间的耦合度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

4分52秒

74-依赖注入之为数组类型的属性赋值

12分12秒

75-依赖注入之为list集合类型的属性赋值

11分35秒

76-依赖注入之为map集合类型的属性赋值

7分31秒

72-依赖注入之为类类型的属性赋值(引用外部的bean)

12分21秒

14_尚硅谷_大数据Spring_DI依赖注入的方式_构造器方式注入_type指定参数类型.avi

7分46秒

73-依赖注入之为类类型的属性赋值(级联方式和内部bean)

14分8秒

16_尚硅谷_大数据Spring_依赖注入_字面量的处理 .avi

6分48秒

22_尚硅谷_大数据Spring_依赖注入_Map类型的属性.avi

3分11秒

13_尚硅谷_大数据Spring_DI依赖注入的方式_构造器方式注入_index指定参数位置.avi

16分10秒

07. 尚硅谷_AngularJS_声明式和命令式的区别,依赖注入.avi

8分6秒

11_尚硅谷_大数据Spring_DI依赖注入的方式_set方式.avi

6分37秒

17_尚硅谷_大数据Spring_依赖注入_引用其他的bean.avi

领券