You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kev/Drawer/UCDraw/PcgDrawR/AvaloniaBootstrapper.cs

54 lines
1.4 KiB
C#

1 month ago
using System;
using AI;
using AI.AgentIntegration;
using AI.Interface;
using AI.Service;
using Avalonia;
using Microsoft.Extensions.DependencyInjection;
namespace PcgDrawR
{
/// <summary>
/// AvaloniaLoader 框架初始化类
/// </summary>
public static class AvaloniaBootstrapper
{
private static bool isInitialized = false;
/// <summary>
/// 初始化
/// </summary>
public static void EnsureInitialized()
{
if (isInitialized)
{
return;
}
// 供 AI 模块 DI 使用(列头匹配等动态表单需调用 GetColumns
AppControllerHolder.Instance = AppController.Instance;
InitializeAvalonia();
InitializeAIModule();
isInitialized = true;
}
private static void InitializeAvalonia()
{
AppBuilder.Configure<App>()
.UsePlatformDetect()
.SetupWithoutStarting();
}
private static void InitializeAIModule()
{
var app = (App)Avalonia.Application.Current;
var kernelService = app.ServiceProvider.GetRequiredService<IChatBackend>() as KernelService;
var formNotifier = app.ServiceProvider.GetService<IFormRequestNotifier>();
kernelService?.Initialize(AppController.Instance, formNotifier);
}
}
}