编辑
2025-09-24
C#
00

摘要

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

编辑
2025-09-24
C#
00

摘要

在配制服务项目中增加一个Json配制读取类,继续继承IConfig接口。

是否可以简化服务注册?

正文

创建一个Json配置文件

JSON
{ "SmtpServer": "smtp.163.com", "UserName": "admin", "Password": "123456" }
编辑
2025-09-24
C#
00

摘要

我们C#做一个功能如下的项目,包括如下基本功能:

配制服务

日志服务

邮件发送服务

正文

新建三个服务Class Library

ConfigServices:配制服务

LogServices:日志服务

EmailServices:邮件发送服务

编辑
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)); }; }