开挖 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());
}
相关推荐
绿浪19841 小时前
C#与C++高效互操作指南
c++·c#
jghhh011 小时前
基于C#的CAN总线BMS上位机开发方案
开发语言·c#
我要打打代码2 小时前
WPF入门指南(3)
wpf
ALex_zry2 小时前
Redis Cluster 故障转移与高可用实践
数据库·redis·wpf
MyBFuture2 小时前
编程实战:相机连接与参数设置指南
windows·c#·visual studio·vision pro·联合编程
kylezhao20192 小时前
深入浅出理解 C# WPF 的事件
开发语言·c#·wpf
我要打打代码2 小时前
C# 各种类库
开发语言·c#
一刻钟.15 小时前
C#高级语法之线程与任务
开发语言·c#
weixin_3077791316 小时前
C#实现两个DocumentDB实例之间同步数据
开发语言·数据库·c#·云计算
foundbug99916 小时前
基于C#的OPC DA客户端实现源码解析
开发语言·c#