public void Insert(int index, StiService service) { lock (List) { service.PackService(); List.Insert(index, service); lock (keysHashtable) { string key = GetStringFromService(service); if (keysHashtable[key] == null) { keysHashtable.Add(key, service); if (!noTypes) { lock (typesHashtable) { StiServiceContainer services = typesHashtable[service.ServiceType] as StiServiceContainer; if (services == null) { services = new StiServiceContainer(true); typesHashtable.Add(service.ServiceType, services); } lock (services) { services.Add(service); } } } } } } }
/// <summary> /// Adds service to the container. /// </summary> /// <param name="service">Service.</param> public void Add(StiService service, bool callBeforeGetService) { if (service.ServiceType != null) { if (callBeforeGetService && BeforeGetService != null) { var args = new StiServiceActionEventArgs(StiServiceActionType.Add) { Services = new List <StiService> { service } }; BeforeGetService(service.ServiceType, args); if (args.Processed) { return; } } service.PackService(); lock (List) { lock (keysHashtable) { string key = GetStringFromService(service); if (keysHashtable[key] == null) { keysHashtable.Add(key, service); List.Add(service); if (!noTypes) { lock (typesHashtable) { StiServiceContainer services = typesHashtable[service.ServiceType] as StiServiceContainer; if (services == null) { services = new StiServiceContainer(true); typesHashtable.Add(service.ServiceType, services); } lock (services) { services.Add(service); } } } } } } } }