static public void RegisterService(Type type, DynamicParametersDelegate resolve, params Type[] intercepters) { TheContainer.Register(Component .For(type) .DynamicParameters(resolve) .Interceptors(intercepters)); }
/// <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; })); }
static public void RegisterServiceSingleton <Tclass>(DynamicParametersDelegate resolve, params Type[] intercepters) where Tclass : class { TheContainer.Register(Component .For <Tclass>() .DynamicParameters(resolve) .Interceptors(intercepters) .LifeStyle.Singleton); }
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); }
/// <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); }