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;
}
}