Esempio 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);
     }
 }
Esempio n. 2
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);
                }
            }
        }