Ejemplo n.º 1
0
        /// <summary>
        /// Registers and binds service with a given type to objects of specified type, created later at runtime by specified handler.
        /// </summary>
        public RegisteredServiceContext Register <T>(ServiceMode mode, ServiceCreationHandler creationHandler, params object[] constructorArgs)
        {
            var id = typeof(T);

            if (creationHandler == null)
            {
                return(RegisterServiceObject(_typeServices, id, GetWrapper(id, mode, constructorArgs)));
            }

            return(RegisterServiceObject(_typeServices, id, GetWrapper(id, new[] { id }, creationHandler, mode, constructorArgs)));
        }
        /// <summary>
        /// Init constructor.
        /// </summary>
        public ServiceDelegateCloneWrapper(IServiceProviderEx provider, object registeredServiceID, IEnumerable<Type> validators, ServiceCreationHandler serviceHandler, object[] serviceConstructorArgs)
            : base(provider)
        {
            if (serviceHandler == null)
                throw new ArgumentNullException("serviceHandler");

            RegisteredServiceID = registeredServiceID;
            Validators = validators;
            ServiceHandler = serviceHandler;
            ServiceArgs = serviceConstructorArgs;
        }
        /// <summary>
        /// Init constructor.
        /// </summary>
        public ServiceDelegateCloneWrapper(IServiceProviderEx provider, object registeredServiceID, IEnumerable <Type> validators, ServiceCreationHandler serviceHandler, object[] serviceConstructorArgs)
            : base(provider)
        {
            if (serviceHandler == null)
            {
                throw new ArgumentNullException("serviceHandler");
            }

            RegisteredServiceID = registeredServiceID;
            Validators          = validators;
            ServiceHandler      = serviceHandler;
            ServiceArgs         = serviceConstructorArgs;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Registers and binds service with a given id to objects of specified type, created later at runtime by specified handler.
        /// </summary>
        public RegisteredServiceContext Register(string id, ServiceMode mode, ServiceCreationHandler creationHandler, params object[] constructorArgs)
        {
            if (id == null)
            {
                throw new ArgumentNullException("id");
            }
            if (creationHandler == null)
            {
                throw new ArgumentNullException("creationHandler");
            }

            return(RegisterServiceObject(_stringServices, id, GetWrapper(id, null, creationHandler, mode, constructorArgs)));
        }
Ejemplo n.º 5
0
        public void FailToRegisterDynamicServiceViaHandler()
        {
            var s = new ServiceLocator();
            ServiceCreationHandler h = (sender, e) =>
            {
                e.Service = new SimpleService();
            };

            // fail to register service:
            s.Register(typeof(IUnknownService), ServiceMode.Singleton, h);

            // try to get a service, and an exception should be generated:
            var o = s.GetService <IUnknownService>();

            Assert.IsNull(o);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Init constructor.
 /// </summary>
 public ServiceDelegateWrapper(IServiceProviderEx provider, object registeredServiceID, IEnumerable <Type> validators, ServiceCreationHandler serviceHandler, object[] serviceConstructorArgs)
     : base(provider, registeredServiceID, validators, serviceHandler, serviceConstructorArgs)
 {
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Gets a wrapper dynamically creating/validating service via specified handler.
        /// </summary>
        private ServiceObjectWrapper GetWrapper(object id, IEnumerable <Type> validators, ServiceCreationHandler creationHandler, ServiceMode mode, object[] constructorArgs)
        {
            if (creationHandler == null)
            {
                return(null);
            }

            return(mode == ServiceMode.Singleton
                       ? new ServiceDelegateWrapper(this, id, validators, creationHandler, constructorArgs)
                       : new ServiceDelegateCloneWrapper(this, id, validators, creationHandler, constructorArgs));
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Registers and binds service with a given id to objects of specified type, created later at runtime by specified handler.
 /// </summary>
 public RegisteredServiceContext Register(uint id, ServiceMode mode, ServiceCreationHandler creationHandler, params object[] constructorArgs)
 {
     return(RegisterServiceObject(_uintServices, id, GetWrapper(id, null, creationHandler, mode, constructorArgs)));
 }
Ejemplo n.º 9
0
        /// <summary>
        /// Registers and binds service with a given id to objects of specified type, created later at runtime by specified handler.
        /// </summary>
        public RegisteredServiceContext Register(IEnumerable <Type> id, ServiceMode mode, ServiceCreationHandler creationHandler, params object[] constructorArgs)
        {
            if (id == null)
            {
                throw new ArgumentNullException("id");
            }

            return(RegisterServiceObject(_typeServices, id, GetWrapper(id, id, creationHandler, mode, constructorArgs)));
        }