开挖 Domain - 前奏

WPF App

主机配置

Microsot.Extension.Hosting

一键启动(配置文件、依赖注入,日志)

csharp 复制代码
// App.xaml.cs 中定义 IHost
private readonly IHost _host = Host.CreateDefaultBuilder().ConfigureAppConfiguration(c =>
{
    _ = c.SetBasePath(Environment.CurrentDirectory);
    //  配置文件
    // _ = c.AddJsonFile("appsettings.json");
    _ = c.AddIniFile("appsettings.ini");
}).ConfigureServices((c, s) =>
{
    // 后台服务 BackgroundService
    _ = s.AddHostedService<ApplicationHostService>();
    _ = s.AddHostedService<WorkerService>();

    // 视图
    _ = s.AddSingleton<MainWindow>();
    _ = s.AddSingleton<ViewModels.MainWindowViewModel>();
    _ = s.AddSingleton<ModuleForLogView>();
    _ = s.AddSingleton<ViewModels.ModuleForLogViewModel>();
    
    // 依赖注入
    _ = s.AddScoped<IMonkey, Monkey>();
}).ConfigureLogging((c, l) =>
{
    l.ClearProviders();
    // Logging 自带的仅能输出至控制台
    // NLog 扩展 记录到文件
    l.AddNLog();
}).Build();

构造函数注入,读取配置信息

更丰富的注入还需要 Autofac

配置文件支持 json,ini 等,使用_config["A:B"]写法读取配置项

csharp 复制代码
private readonly IMonkey _monkeyService;
private readonly ILogger<ModuleForLogViewModel> _logger;
private readonly IConfiguration _config;
public ModuleForLogViewModel(IMonkey monkeyService, ILogger<ModuleForLogViewModel> logger, IConfiguration config)
{
    _monkeyService = monkeyService;
    _logger = logger;
    _config = config;
    // 读取配置
    var s = _config["项目:年份"];
    _logger.LogInformation(s);
    MessageBox.Show(_monkeyService.Act());
}
相关推荐
500845 小时前
昇腾 CANN 的五层架构,到底分了哪五层
java·人工智能·分布式·架构·ocr·wpf
baivfhpwxf20238 小时前
c# 中对像之间频繁的转换会慢吗?
开发语言·c#
加号39 小时前
【C#】 实现 XRC 异或冗余校验:原理与实践
c#·xrc
小钻风336610 小时前
Java + Spring Boot 操作 Kafka 完整学习指南
c#·linq
叫我少年10 小时前
C# 程序的常规结构 — 命名空间、类型、入口点与表达式
c#
醉颜凉10 小时前
ZooKeeper Zxid 与 Epoch 深度解析:分布式事务的时空坐标
分布式·zookeeper·wpf
5008411 小时前
HCCL 集合通信编程:多卡协同的正确姿势
java·flutter·性能优化·electron·wpf
5008412 小时前
用 Ascend CL 从零写一个推理程序
人工智能·深度学习·机器学习·性能优化·wpf
开开心心就好12 小时前
用户推荐的文件解锁与强制操作工具
安全·智能手机·pdf·scala·音视频·symfony·1024程序员节
步步为营DotNet14 小时前
探秘.NET 11:C# 14 特性在后端性能优化中的深度应用
性能优化·c#·.net