using System.Collections; using XFEExtension.NetCore.AutoImplement; namespace XFEExtension.NetCore.MemoryEditor.Manager; /// /// 静态内存管理器 /// [CreateImpl] public class StaticMemoryManager : MemoryManager { /// /// 地址值字典 /// public Dictionary ItemDictionary { get; set; } = []; /// /// 索引器 /// /// 地址标识名 /// public StaticMemoryItem this[string addressName] => ItemDictionary[addressName]; internal override void Add(MemoryItemBuilder builder) { if (builder.staticMemoryAddress is null) throw new ArgumentNullException(nameof(builder), "对于静态地址管理器,构建器的静态地址不可为空"); var staticMemoryItem = new StaticMemoryItemImpl(builder.name, builder.staticMemoryAddress.Value, builder.memoryAddressType, Editor); if (builder.hasListener) staticMemoryItem.AddListener(builder.listenerFrequency, builder.startListen); ItemDictionary.Add(builder.name, staticMemoryItem); } /// /// 获取枚举器 /// /// public override IEnumerator GetEnumerator() => ItemDictionary.GetEnumerator(); /// /// 释放资源 /// /// 地址标识名称 public override void Remove(string addressName) => ItemDictionary.Remove(addressName); /// /// 静态内存管理器 /// /// 内存构建器组 internal StaticMemoryManager(params MemoryItemBuilder[] builders) { Add(builders); Editor.ValueChanged += (sender, e) => valueChanged?.Invoke(ItemDictionary[sender.Name], e); } }