using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CoreAgent.ProtocolClient.Context.UeStateManager; using CoreAgent.ProtocolClient.Enums; using Microsoft.Extensions.Logging; namespace CoreAgent.ProtocolClient.Context { public class ProtocolClientContext { // 常量和正则表达式已迁移至 ProtocolLogPatterns 静态类,便于统一管理和调用。 public readonly ILoggerFactory _loggerFactory; public ProtocolBasicInfo BasicInfo { get; set; } = new(); public ProtocolFeatureFlags FeatureFlags { get; set; } = new(); public ProtocolLogContext LogContext { get; set; } public UeIdentifierManager UeIdentifier { get; set; } public CellParameterManager CellParameterManager { get; set; } = new(); public ClientState State { get; set; } = ClientState.Stop; public ProtocolClientContext(ILoggerFactory loggerFactory) { _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); // 使用ILoggerFactory为各个组件创建正确的Logger var ueIdentifierLogger = _loggerFactory.CreateLogger(); var logContextLogger = _loggerFactory.CreateLogger(); // 先创建UeIdentifierManager UeIdentifier = new UeIdentifierManager(ueIdentifierLogger); // 然后创建ProtocolLogContext,传入this引用 LogContext = new ProtocolLogContext(logContextLogger, this); } } }