using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using MyAvaloniaApp.Services; using MyAvaloniaApp.ViewModels; using ReactiveUI; using Splat; using System; namespace MyAvaloniaApp.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; } }