开挖 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());
}
相关推荐
呆呆敲代码的小Y3 小时前
【游戏开发】Lua 与 C# 交互原理解析
c#·lua·交互·热更新·lua与c#交互·游戏热更新
用户298698530143 小时前
PDF 转纯文本(TXT)免费攻略:轻松提取文字内容
人工智能·后端·c#
呆呆敲代码的小Y3 小时前
【游戏开发】C# 中的迭代器
java·开发语言·c#·迭代器
2601_9621741718 小时前
Redis 简介
数据库·redis·wpf
格林威1 天前
C# 相机Burst模式图像采集:使用相机内存配合OpenCvSharp和Halcon实现短时间的高速采集的方法
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
J总裁的小芒果1 天前
参数过多-分批传参
c#
典典分享指南1 天前
短视频分镜提示词:让 AI 出片的产品口播
java·c#·bash·composer·symfony
Z5998178411 天前
c#软件开发学习笔记--WPF(Canvas、数据绑定、MVVM模式、值转换器)
笔记·学习·c#
淡海水1 天前
05-03-栈队列-PriorityQueue-TElement-TPriority-NET6优先队列语义与四叉堆实现
服务器·前端·c#·priorityqueue·clr·telement