Example #1
0
        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;
        }
Example #2
0
 /// <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> _));
 }