internal static void AddRegistration(Registration dr) { if (StaticLogger.Level != StaticLogger.LoggingLevel.None) { StaticLogger.Log($"DI: Registering {dr.RegisteredType.FullName} => { dr.ToInstantiate.FullName} ({dr.ServiceProvider.Name})", StaticLogger.LoggingLevel.Call); } if (!Registrations.TryGetValue(dr.RegisteredType, out ConcurrentList <Registration> registrations)) { registrations = new ConcurrentList <Registration>(); Registrations.TryAdd(dr.RegisteredType, registrations); } ResolvableTypes.TryRemove(dr.RegisteredType, out _); registrations.Insert(0, dr); return; }
/// <summary> /// Removes any registrations for the given type /// </summary> /// <param name="t">The type to remove</param> /// <returns>Whether or not the unregistration was a success</returns> public static bool Unregister(Type t) { ResolvableTypes.TryRemove(t, out _); return(Engine.Registrations.TryRemove(t, out ConcurrentList <Registration> _)); }