- Add Models: Category, ToolItem (IsValid runtime-only, not stored), AppConfig - Add Services: IDataService + JsonDataService (JSON load/save) - Path validation on Load(): File.Exists check, logs warning for missing paths - Startup: auto-calls dataService.Load() to load config
46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
using Microsoft.Extensions.DependencyInjection;
|
|
using System.Windows;
|
|
using PersonalToolBox.Services;
|
|
using PersonalToolBox.Views;
|
|
|
|
namespace PersonalToolBox;
|
|
|
|
/// <summary>
|
|
/// WPF 应用程序入口,负责依赖注入容器初始化和启动主窗口
|
|
/// </summary>
|
|
public partial class App : Application
|
|
{
|
|
public static IServiceProvider Services { get; private set; } = null!;
|
|
|
|
protected override void OnStartup(StartupEventArgs e)
|
|
{
|
|
base.OnStartup(e);
|
|
|
|
var services = new ServiceCollection();
|
|
ConfigureServices(services);
|
|
Services = services.BuildServiceProvider();
|
|
|
|
// 启动时加载配置文件(含路径验证与容错)
|
|
var dataService = Services.GetRequiredService<IDataService>();
|
|
dataService.Load();
|
|
|
|
var mainWindow = Services.GetRequiredService<MainWindow>();
|
|
mainWindow.Show();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 注册所有服务到 DI 容器(单例模式)
|
|
/// </summary>
|
|
private static void ConfigureServices(IServiceCollection services)
|
|
{
|
|
// 日志服务
|
|
services.AddSingleton<ILogService, LogService>();
|
|
|
|
// 数据持久化服务
|
|
services.AddSingleton<IDataService, JsonDataService>();
|
|
|
|
// 主窗口
|
|
services.AddSingleton<MainWindow>();
|
|
}
|
|
}
|