C# 是一种广泛使用的编程语言,具有丰富的特性和广泛的应用场景。其中,依赖注入(DI)是一种非常重要的软件设计模式,它可以将类及其依赖项的控制权反转,使得程序的可扩展性和灵活性得到了极大的提升。在 .NET 世界中,依赖注入、IConfiguration、ILogger 和 Option 模式被视为一等公民,成为了广泛使用的设计模式。
nuget安装
Microsoft.Extensions.DependencyInjection;
Microsoft.Extensions.Configuration
Microsoft.Extensions.Logging
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.Logging.Console
写一个简单配制文件application.json
在配制服务项目中增加一个Json配制读取类,继续继承IConfig接口。
是否可以简化服务注册?
创建一个Json配置文件
JSON{
"SmtpServer": "smtp.163.com",
"UserName": "admin",
"Password": "123456"
}
C#中提供了三种不同的依赖注入方式,分别是AddScoped、AddTransient和AddSingleton。每种依赖注入方式都有其独特的生命周期,在实际使用中,您可以根据需要选择不同的依赖注入方式。需要注意的是,在使用依赖注入时,您需要考虑到每种方式的生命周期和可能带来的问题,例如内存泄漏和线程安全性等。因此,在编写代码时,您需要仔细考虑您所使用的依赖注入方式,并确保它们在正确的情况下工作。
试一下AddTransient
有需要的时候都会创建一个新的。
C#static void Main(string[] args)
{
ServiceCollection services = new ServiceCollection();
services.AddTransient<Plc>();
using (ServiceProvider sp = services.BuildServiceProvider())
{
Plc plc= sp.GetService<Plc>();
plc.Name = "S71200";
plc.Description = "SIEMENS";
plc.Read("DB0.0");
Plc plc1=sp.GetService<Plc>();
Console.WriteLine(object.ReferenceEquals(plc, plc1));
};
}