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); }
/// <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); }
public SiteController(ILogger <SiteController> logger, IServiceSite serviceSite, IServicePing servicePing) { this._logger = logger; this._serviceSite = serviceSite; this._servicePing = servicePing; }