依赖注入, 参数配置, 默认参数,动态灵活的参数配置
- 通过委托配置实现灵活的服务参数管理
Action<SecsGemOption> configure = null
var option = new SecsGemOption(); configure?.Invoke(option);
using System;
// 模拟 SecsGemOption 类
public class SecsGemOption
{
public string Target { get; set; } = "默认值"; // 默认值
}
// 模拟 IServiceCollection 类
public class MyServiceCollection { }
public static class MyServiceExtensions
{
// 模拟 AddSecsGem 扩展方法
public static void AddSecsGem(this MyServiceCollection collection, Action<SecsGemOption> configure = null)
{
// ♈♈♈♈♈♈♈♈♈♈♈
var option = new SecsGemOption();
// 关键点:执行外部传入的配置逻辑
configure?.Invoke(option);
Console.WriteLine($"最终配置: Target={option.Target}");
}
}
class Program
{
static void Main()
{
var services = new MyServiceCollection();
// 场景1:不传入配置
services.AddSecsGem(); // 输出: 最终配置: Target=默认值
// 场景2:传入配置,修改 Target
services.AddSecsGem(option =>
{
option.Target = "127.0.0.1:5000"; // 修改属性值
}); // 输出: 最终配置: Target=127.0.0.1:5000
}
}