| File: LifecycleEvents\LifecycleEventService.cs | Web Access |
| Project: src\src\Core\src\Core.csproj (Microsoft.Maui) |
using System; using System.Collections.Generic; using System.Linq; namespace Microsoft.Maui.LifecycleEvents { public class LifecycleEventService : ILifecycleEventService, ILifecycleBuilder { readonly Dictionary<string, List<Delegate>> _mapper = new(StringComparer.Ordinal); public LifecycleEventService(IEnumerable<LifecycleEventRegistration> registrations) { if (registrations != null) { foreach (var registrationAction in registrations) { registrationAction.AddRegistration(this); } } } public void AddEvent<TDelegate>(string eventName, TDelegate action) where TDelegate : Delegate { if (!_mapper.TryGetValue(eventName, out var delegates) && delegates == null) _mapper[eventName] = delegates = new List<Delegate>(); delegates.Add(action); } public IEnumerable<TDelegate> GetEventDelegates<TDelegate>(string eventName) where TDelegate : Delegate { if (_mapper.TryGetValue(eventName, out var delegates) && delegates != null) return delegates.OfType<TDelegate>(); return Enumerable.Empty<TDelegate>(); } public bool ContainsEvent(string eventName) => _mapper.TryGetValue(eventName, out var delegates) && delegates?.Count > 0; } }