using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using AuroraDesk.Services; using AuroraDesk.ViewModels; using ReactiveUI; using Splat; using System; namespace AuroraDesk.Extensions; /// /// 鏈嶅姟闆嗗悎鎵╁睍鏂规硶 /// public static class ServiceCollectionExtensions { /// /// 娣诲姞 ReactiveUI 鐩稿叧鏈嶅姟 /// /// 鏈嶅姟闆嗗悎 /// 鏈嶅姟闆嗗悎 public static IServiceCollection AddReactiveUI(this IServiceCollection services) { // 娉ㄥ唽 ReactiveUI 鐩稿叧鏈嶅姟 services.AddSingleton(); services.AddSingleton(provider => provider.GetRequiredService()); return services; } /// /// 娣诲姞涓氬姟鏈嶅姟 /// /// 鏈嶅姟闆嗗悎 /// 鏈嶅姟闆嗗悎 public static IServiceCollection AddBusinessServices(this IServiceCollection services) { // 娉ㄥ唽涓氬姟鏈嶅姟 services.AddTransient(); services.AddTransient(); // 娉ㄥ唽璧勬簮鏈嶅姟 services.AddSingleton(); return services; } /// /// 娣诲姞 ViewModel 鏈嶅姟 /// /// 鏈嶅姟闆嗗悎 /// 鏈嶅姟闆嗗悎 public static IServiceCollection AddViewModels(this IServiceCollection services) { // 娉ㄥ唽 MainWindowViewModel锛岄€氳繃 AppViewModel 鑾峰彇 // 娉ㄦ剰锛氶渶瑕佸厛娉ㄥ唽 AppViewModel services.AddTransient(provider => { var appViewModel = provider.GetRequiredService(); return appViewModel.MainWindowViewModel; }); return services; } }