开挖 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());
}
相关推荐
ghost14341 分钟前
C#学习第20天:垃圾回收
开发语言·学习·c#
code_shenbing2 小时前
WPF实现类似Microsoft Visual Studio2022界面效果及动态生成界面技术
ui·c#·wpf·上位机
code_shenbing4 小时前
C# 高效操作excel文件
c#·excel·图表
code_shenbing5 小时前
C#扩展方法与Lambda表达式基本用法
开发语言·c#·lambda表达式·扩展方法
FAREWELL000756 小时前
C#进阶学习(十七)PriorityQueue<TElement, TPriority>优先级队列的介绍
开发语言·学习·c#·优先级队列
酬勤-人间道7 小时前
分享:VTK版本的选择 - WPF空域问题
vtk·wpf·空域
Zhen (Evan) Wang7 小时前
WPF常用技巧汇总 - Part 2
java·大数据·wpf
冰茶_15 小时前
WPF之TextBlock控件详解
microsoft·微软·c#·wpf·wpf控件
学习中的码虫16 小时前
c#栈及其应用
开发语言·c#
CHQIUU19 小时前
C# 中重启程序通常意味着关闭当前运行的应用程序实例
开发语言·c#