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));
};
}
在C#中,可以使用依赖注入容器(Dependency Injection Container)来根据类型获取和注册服务。依赖注入是一种设计模式,它允许我们将对象的创建和依赖解析从使用它的类中分离出来,从而实现松耦合和可测试性。
服务类型可以是类,也可以是接口,不过推荐使用接口,要录活些。

控制反转(IoC)是面向对象编程中的一种设计原则,旨在降低代码之间的耦合度。其中,依赖注入(DI)是最常见的方式之一,它允许一个调控系统控制并传递对象所依赖的对象的引用,从而实现依赖的注入。此外,还有一种称为“依赖查找”(DL)的方式,它通过在对象被创建时将依赖项传递给它,从而将依赖注入到对象中。这样可以减少代码之间的耦合度,使程序更加灵活和可扩展。

我们先理解一下控制是什么?
如果我们要采集一个设备的信息?一般有几步?
伪代码如下
C#static void Main(string[] args)
{
Collect();
}
static void Collect()
{
connection("127.0.0.1", 8080);
conect();
read(address);
close();
}