开挖 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());
}
相关推荐
beyond谚语22 分钟前
二、WPF——Style样式玩法(通过资源字典将Style独立,全局调用)
wpf
光辉岁月~9 小时前
使用CalcBinding实现复杂逻辑绑定
wpf
土了个豆子的11 小时前
04.事件中心模块
开发语言·前端·visualstudio·单例模式·c#
@areok@12 小时前
C++mat传入C#OpencvCSharp的mat
开发语言·c++·opencv·c#
时光追逐者14 小时前
C# 哈希查找算法实操
算法·c#·哈希算法
三千道应用题15 小时前
C#语言入门详解(18)传值、输出、引用、数组、具名、可选参数、扩展方法
开发语言·c#
micoos15 小时前
C#-LinqToObject-Element
c#
忧郁的蛋~15 小时前
使用.NET标准库实现多任务并行处理的详细过程
开发语言·c#·.net
索迪迈科技19 小时前
记一次 .NET 某中医药附属医院门诊系统 崩溃分析
windows·c#·.net·windbg
SunflowerCoder19 小时前
WPF迁移avalonia之触发器
c#·wpf·avalonia