using System.Collections.Generic; using System; using log4net; using System.Reflection; public static class Locator { private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly Dictionary services = new(); public static void RegisterService(T service) { Type serviceType = typeof(T); if (!services.ContainsKey(serviceType)) { services.Add(serviceType, service); } else { Log.Warn($"Service of type {serviceType} is alreade registered."); } } public static T GetService() { Type serviceType = typeof(T); if (services.TryGetValue(serviceType, out var service)) { return (T)service; } else { Log.Error($"Service of type {serviceType} not registered.using System.Collections"); throw new KeyNotFoundException($"Service of type {serviceType} not registered.using System.Collections"); } } }