浙江网站制作公司,WordPress主题没有删除,wordpress mysqlli,哈尔滨网站优化公司在 C# 中#xff0c;依赖注入#xff08;Dependency Injection#xff0c;简称 DI#xff09;是一种编程技术#xff0c;用于减少代码之间的耦合。依赖注入可以通过构造函数注入、属性注入或方法注入实现。在 .NET Core 和 .NET 5 中#xff0c;还提供了一个内置的依赖注…在 C# 中依赖注入Dependency Injection简称 DI是一种编程技术用于减少代码之间的耦合。依赖注入可以通过构造函数注入、属性注入或方法注入实现。在 .NET Core 和 .NET 5 中还提供了一个内置的依赖注入容器。
以下是一个简单的构造函数注入的例子
public interface IService
{void Serve();
}public class Service : IService
{public void Serve(){Console.WriteLine(Service Called);//To Do: Some Stuff}
}public class Client
{private IService _service;public Client(IService service){this._service service;}public void Start(){Console.WriteLine(Service Started);this._service.Serve();//To Do: Some Stuff}
}在这个例子中Client 类依赖于 IService。通过将 IService 作为 Client 的构造函数的参数我们可以在创建 Client 对象时将任何实现了 IService 接口的对象注入 Client。这样Client 就不再直接依赖于 Service 类而是依赖于 IService 接口这降低了代码之间的耦合。
.NET Core 和 .NET 5 提供了一个内置的依赖注入容器可以更容易地实现依赖注入。以下是一个例子
public void ConfigureServices(IServiceCollection services)
{services.AddTransientIService, Service();
}在这个例子中AddTransient 方法告诉依赖注入容器每次有类需要 IService 时都应该创建一个新的 Service 类实例。你也可以使用 AddSingleton 方法来创建一个在整个应用程序生命周期中只有一个实例的服务或者使用 AddScoped 方法来创建一个在每个请求作用域中都是唯一的服务。
总的来说依赖注入是一种强大的技术可以帮助你创建更灵活、更易于测试和维护的代码。虽然实现依赖注入需要一些额外的工作但在大多数情况下这都是值得的。
依赖注入主要有三种形式构造器注入属性注入和方法注入。 构造器注入这是最常见的依赖注入类型也是最推荐的类型。在这种情况下依赖性如服务或组件通过类的构造函数传递。 属性注入在这种情况下依赖性通过类的公共属性设置。这种类型的注入一般不推荐因为它可能会导致对象的状态在创建后被改变。但在某些情况下例如在处理与框架集成的情况下属性注入可能是必要的。 方法注入在这种情况下依赖性通过方法参数传递。这种类型的依赖注入主要用于那些只有在特定方法调用时才需要依赖的情况。
在.NET Core中有一个内置的依赖注入服务容器用于注册和解析依赖关系。以下是如何使用内置DI容器的示例
public class Startup
{public void ConfigureServices(IServiceCollection services){// 注册服务services.AddScopedIMyService, MyService();}
}在上述代码中AddScoped方法用于将服务MyService注册为作用域生命周期的服务。这意味着在相同的请求中每次请求IMyService都会得到相同的实例。其他可用的方法有AddTransient每次请求都创建新的实例和AddSingleton整个应用程序生命周期内只创建一个实例。
然后在需要使用服务的地方你只需要在构造函数中添加一个参数
public class MyController : Controller
{private readonly IMyService _myService;public MyController(IMyService myService){_myService myService;}public IActionResult Index(){_myService.DoSomething();return View();}
}在这个例子中当创建MyController的新实例时.NET Core的依赖注入容器会自动提供IMyService的实例。
依赖注入是一种强大的设计模式它能够帮助你管理和解耦你的代码使代码更易于测试和维护。