using GFramework.Core.Abstractions.architecture;
using GFramework.Core.Abstractions.logging;
using GFramework.Core.Abstractions.properties;
using GFramework.Core.logging;
using Mediator;
using Microsoft.Extensions.DependencyInjection;
namespace GFramework.Core.architecture;
///
/// 默认架构配置类,实现IArchitectureConfiguration接口
/// 提供日志工厂、日志级别和架构选项的默认配置
///
public sealed class ArchitectureConfiguration : IArchitectureConfiguration
{
///
/// 获取或设置日志选项
/// 默认配置为Info级别日志,使用控制台日志工厂提供程序
///
public LoggerProperties LoggerProperties { get; set; } = new()
{
LoggerFactoryProvider = new ConsoleLoggerFactoryProvider
{
MinLevel = LogLevel.Info
}
};
///
/// 获取或设置架构选项
/// 默认创建新的ArchitectureOptions实例
///
public ArchitectureProperties ArchitectureProperties { get; set; } = new()
{
AllowLateRegistration = false,
StrictPhaseValidation = true
};
///
/// 获取或设置Mediator配置委托
/// 用于自定义Mediator框架的配置选项
///
/// 配置Mediator选项的委托函数,可为null
public Action? Configurator { get; set; } = options =>
{
options.Namespace = "GFramework.Core.Mediator";
options.ServiceLifetime = ServiceLifetime.Singleton;
options.GenerateTypesAsInternal = true;
options.NotificationPublisherType = typeof(ForeachAwaitPublisher);
};
}