Ejemplo n.º 1
0
 /// <summary>
 /// Get component object for a service specified.
 /// </summary>
 /// <param name="serviceId">Service ID</param>
 /// <returns>Overriding component object for the service</returns>
 public IComponent GetOverridingComponent(Guid serviceId)
 {
     lock (ServiceOverrideLock) {
         IComponent result;
         OverriddenServiceMap.TryGetValue(serviceId, out result);
         return(result);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Clear a service override of the service specified.
 /// </summary>
 /// <param name="serviceId">Service ID that service override to be cleard.</param>
 public void ClearServiceOverride(Guid serviceId)
 {
     lock (ServiceOverrideLock) {
         if (OverriddenServiceMap.Remove(serviceId))
         {
             ServiceOverrideCleard?.Invoke(this, serviceId);
         }
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Clear all service overrides.
 /// </summary>
 public void ClearServiceOverrides()
 {
     lock (ServiceOverrideLock) {
         var serviceIds = OverriddenServiceMap.Keys;
         OverriddenServiceMap.Clear();
         foreach (var serviceId in serviceIds)
         {
             ServiceOverrideCleard?.Invoke(this, serviceId);
         }
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Override some service by a component specified.
        /// </summary>
        /// <param name="serviceId">Id of the service to be overridden.</param>
        /// <param name="component">Component</param>
        public void OverrideService(Guid serviceId, IComponent component)
        {
            if (component == null)
            {
                throw new ArgumentNullException(nameof(component));
            }

            lock (ServiceOverrideLock) {
                IComponent oldValue;
                var        isChanged = OverriddenServiceMap.TryGetValue(serviceId, out oldValue)
                                        ? oldValue == component
                                        : true;

                if (isChanged)
                {
                    OverriddenServiceMap[serviceId] = component;
                    ServiceOverrided?.Invoke(this, serviceId);
                }
            }
        }