/// <summary>
        /// Gets or creates an instance of a service object.
        /// </summary>
        public override object GetService(object requestedServiceName)
        {
            var e = new ServiceCreationEventArgs(Provider, RegisteredServiceID, requestedServiceName, ServiceArgs);

            // call the service creator:
            ServiceHandler(Provider, e);

            var service = e.Service;

            // check if service has been really created:
            if (service == null)
                return null;

            // validate if given service object
            // implements requested interfaces:
            if (Validators != null)
            {
                var serviceType = service.GetType();

                foreach (var v in Validators)
                    if (!ServiceLocator.IsAssignableFrom(v, serviceType))
                        throw new ServiceValidationException(v, serviceType);
            }

            IServiceSite site = service as IServiceSite;

            // initialize with proper service provider:
            if (site != null)
                site.SetSite(Provider);

            return service;
        }
        /// <summary>
        /// Gets or creates an instance of a service object.
        /// </summary>
        public override object GetService(object requestedServiceName)
        {
            var e = new ServiceCreationEventArgs(Provider, RegisteredServiceID, requestedServiceName, ServiceArgs);

            // call the service creator:
            ServiceHandler(Provider, e);

            var service = e.Service;

            // check if service has been really created:
            if (service == null)
            {
                return(null);
            }

            // validate if given service object
            // implements requested interfaces:
            if (Validators != null)
            {
                var serviceType = service.GetType();

                foreach (var v in Validators)
                {
                    if (!ServiceLocator.IsAssignableFrom(v, serviceType))
                    {
                        throw new ServiceValidationException(v, serviceType);
                    }
                }
            }

            IServiceSite site = service as IServiceSite;

            // initialize with proper service provider:
            if (site != null)
            {
                site.SetSite(Provider);
            }

            return(service);
        }