编辑
2025-09-24
C#
00

摘要

服务定位器的使用使得应用程序的逻辑更加清晰和易于维护。服务定位器定义了服务之间的依赖关系,使得每个服务都可以独立地创建和管理。这样,如果需要更改一个服务的实现,只需要更改该服务的实现类,而不会影响其他服务。

正文

image.png

服务器定位器模式不会描述如何实例化服务,它描述一个注册服务和定位服务的方法。通常情况下,服务定位器模式结合工厂模式(Factory pattern)和/或依赖注入模式(Dependency Injection pattern)。这种组合使得服务定位器创建服务的实例。

编辑
2025-09-24
C#
00

摘要

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)); }; }
编辑
2025-09-24
C#
00

摘要

在C#中,可以使用依赖注入容器(Dependency Injection Container)来根据类型获取和注册服务。依赖注入是一种设计模式,它允许我们将对象的创建和依赖解析从使用它的类中分离出来,从而实现松耦合和可测试性。

正文

服务类型可以是类,也可以是接口,不过推荐使用接口,要录活些。

  • Install-Package Microsoft.Extensions.DependencyInjection
  • using Microsoft.Extensions.DependencyInjection
  • SerivceCollection构造容器对象 IServiceProvider
  • BuildServiceProvider()创建ServiceProvider

image.png

编辑
2025-09-24
C#
00

摘要

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

正文

image.png

我们先理解一下控制是什么?

如果我们要采集一个设备的信息?一般有几步?

  1. 设置连接信息IP+端口
  2. 打开连接
  3. 读取信息
  4. 关闭连接

伪代码如下

C#
static void Main(string[] args) { Collect(); } static void Collect() { connection("127.0.0.1", 8080); conect(); read(address); close(); }
编辑
2025-09-24
C#
00

摘要

LINQ to XML 是一个在.NET Framework中的组件,它允许您使用LINQ(Language Integrated Query)查询和操作XML文档。它使用一种更直观的方式来处理XML,可以方便地创建、查询和修改XML文档。

正文

准备一个data.xml 文件

XML
<Books> <Book> <Title>The Catcher in the Rye</Title> <Author>J.D. Salinger</Author> <Price>15.99</Price> </Book> <Book> <Title>To Kill a Mockingbird</Title> <Author>Harper Lee</Author> <Price>12.49</Price> </Book> <Book> <Title>1984</Title> <Author>George Orwell</Author> <Price>19.95</Price> </Book> <Book> <Title>The Great Gatsby</Title> <Author>F. Scott Fitzgerald</Author> <Price>10.79</Price> </Book> <Book> <Title>Pride and Prejudice</Title> <Author>Jane Austen</Author> <Price>8.99</Price> </Book> <Book> <Title>Brave New World</Title> <Author>Aldous Huxley</Author> <Price>14.25</Price> </Book> <Book> <Title>The Hobbit</Title> <Author>J.R.R. Tolkien</Author> <Price>17.50</Price> </Book> <Book> <Title>Harry Potter and the Sorcerer's Stone</Title> <Author>J.K. Rowling</Author> <Price>22.99</Price> </Book> <Book> <Title>Fahrenheit 451</Title> <Author>Ray Bradbury</Author> <Price>11.15</Price> </Book> <Book> <Title>The Lord of the Rings</Title> <Author>J.R.R. Tolkien</Author> <Price>29.99</Price> </Book> </Books>