Example #1
0
 static public void RegisterService(Type type, DynamicParametersDelegate resolve, params Type[] intercepters)
 {
     TheContainer.Register(Component
                           .For(type)
                           .DynamicParameters(resolve)
                           .Interceptors(intercepters));
 }
Example #2
0
 /// <summary>
 ///   Allows custom dependencies to by defined dyncamically.
 /// </summary>
 /// <param name = "resolve">The delegate used for providing dynamic parameters.</param>
 /// <returns></returns>
 public ComponentRegistration <TService> DynamicParameters(DynamicParametersDelegate resolve)
 {
     return(DynamicParameters((k, c, d) =>
     {
         resolve(k, d);
         return null;
     }));
 }
Example #3
0
 static public void RegisterServiceSingleton <Tclass>(DynamicParametersDelegate resolve, params Type[] intercepters)
     where Tclass : class
 {
     TheContainer.Register(Component
                           .For <Tclass>()
                           .DynamicParameters(resolve)
                           .Interceptors(intercepters)
                           .LifeStyle.Singleton);
 }
Example #4
0
 static public void RegisterService <Tinterface, Tclass>(DynamicParametersDelegate resolve, params Type[] intercepters)
     where Tinterface : class
     where Tclass : Tinterface
 {
     TheContainer.Register(Component
                           .For <Tinterface>()
                           .ImplementedBy <Tclass>()
                           .DynamicParameters(resolve)
                           .Interceptors(intercepters));
 }
        /// <summary>
        ///     매개 변수에 대한 역직렬화를 수행합니다.
        /// </summary>
        /// <param name="reflectionName">매개 변수의 리플랙션 수준의 이름입니다.</param>
        /// <param name="element">	컨테이너 요소입니다. </param>
        /// <returns>IoC 컨테이너가 제공하는 매개 변수에 대한 객체 입니다.</returns>
        protected override object ResolveParamOfDependencyElement(string reflectionName, DependencyElement element)
        {
            DynamicParametersDelegate @delegate = (kernel, d) =>
            {
                if (element.key == null)
                {
                    d[reflectionName] = kernel.Resolve(Type.GetType(element.typeOfContract));
                }
                else
                {
                    d[reflectionName] = kernel.Resolve(element.key, Type.GetType(element.typeOfContract));
                }
            };

            return(@delegate);
        }
Example #6
0
        /// <summary>
        ///     Adds the component.
        /// </summary>
        /// <param name="dynamicParameters">Optional lambda describing dependencies</param>
        /// <typeparam name="TService">Type of component's interface</typeparam>
        /// <typeparam name="TComponent">Type of component</typeparam>
        /// <returns>
        ///     key of added component
        /// </returns>
        protected string AddComponent <TService, TComponent>(DynamicParametersDelegate dynamicParameters = null)
            where TService : class
            where TComponent : class, TService
        {
            var key = typeof(TComponent).AssemblyQualifiedName;

            var component = Component
                            .For <TService>()
                            .ImplementedBy <TComponent>()
                            .Named(key);

            if (dynamicParameters != null)
            {
                component.DynamicParameters(dynamicParameters);
            }

            Kernel.Register(component);

            return(key);
        }