public object GetService(Type serviceType)
            {
                if (serviceType == null)
                {
                    throw new ArgumentNullException("serviceType");
                }

                object service = null;

                this._services.TryGetValue(serviceType, out service);

                if (service == null && this._parentContainer != null)
                {
                    service = this._parentContainer.GetService(serviceType);
                }

                Design.ServiceCreatorCallback callback = service as Design.ServiceCreatorCallback;

                if (callback != null)
                {
                    service = callback(this, serviceType);
                }

                return(service);
            }
            public void AddService(Type serviceType, Design.ServiceCreatorCallback callback, bool promote)
            {
                if (promote && this._parentContainer != null)
                {
                    this._parentContainer.AddService(serviceType, callback, promote);
                }
                else
                {
                    lock (this._lock) {
                        if (this._services.ContainsKey(serviceType))
                        {
                            throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.DataAnnotationsResources.ValidationContextServiceContainer_ItemAlreadyExists, serviceType), "serviceType");
                        }

                        this._services.Add(serviceType, callback);
                    }
                }
            }
 public void AddService(Type serviceType, Design.ServiceCreatorCallback callback)
 {
     this.AddService(serviceType, callback, true);
 }