示例#1
0
        private static object PrivateCreation(IServiceProviderEx provider, Type serviceType, object[] serviceArgs)
        {
            // create new instance of the service:
#if PocketPC
            var service = Activator.CreateInstance(serviceType);
#else
            var service = CreateServiceInstance(provider, serviceType, serviceArgs);
#endif

            if (service == null)
            {
                throw new ServiceCreationException(serviceType);
            }

            IServiceSite site = service as IServiceSite;

            // update the reference to the service provider:
            if (site != null)
            {
#if PocketPC
                // call this function in place of constructor:
                site.SetSiteArguments(serviceArgs);
#endif
                site.SetSite(provider);
            }

            return(service);
        }
示例#2
0
        /// <summary>
        /// Init constructor.
        /// </summary>
        public ServiceObjectWrapper(IServiceProviderEx provider, object service)
        {
            if (service == null)
            {
                throw new ArgumentNullException("service");
            }

            Provider = provider;
            Service  = service;

            IServiceSite site = service as IServiceSite;

            // update the provider also for a given service:
            if (site != null)
            {
                site.SetSite(provider);
            }
        }
        /// <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);
        }
示例#4
0
 public SiteController(ILogger <SiteController> logger, IServiceSite serviceSite, IServicePing servicePing)
 {
     this._logger      = logger;
     this._serviceSite = serviceSite;
     this._servicePing = servicePing;
 }