コード例 #1
0
        private static ContainerBuilder BindConstant <TService>(ContainerBuilder builder, TService constant, Action <IBindingBuilder> composeAction)
        {
            TypeInfo serviceType = typeof(TService).GetTypeInfo();

            if (serviceType.IsGenericTypeDefinition)
            {
                IGenericBindingBuilder <TService> genericBindingBuilder = new GenericConstantBindingBuilder <TService>(builder, constant);

                builder.WithGenericBindingBuilder(genericBindingBuilder);

                composeAction?.Invoke(genericBindingBuilder);
            }
            else
            {
                IBindingBuilder bindingBuilder = new ConstantBindingBuilder <TService>(builder, constant);

                composeAction?.Invoke(bindingBuilder);

                builder.WithBindingBuilder(bindingBuilder);
            }

            return(builder);
        }
コード例 #2
0
ファイル: Container.cs プロジェクト: smohekey/Kissinjer
        public IContainer Bind(Type serviceType, object value, Action <IBindingBuilder> composeAction = null)
        {
            TypeInfo serviceTypeInfo = serviceType.GetTypeInfo();

            if (serviceTypeInfo.IsGenericTypeDefinition)
            {
                IGenericBindingBuilder genericBuilder = new GenericConstantBindingBuilder(this, serviceType, value);

                composeAction?.Invoke(genericBuilder);

                return(WithGenericBindingBuilder(genericBuilder));
            }
            else
            {
                IBindingBuilder builder = (IBindingBuilder)__createConstantBindingBuilderMethod
                                          .MakeGenericMethod(serviceType)
                                          .Invoke(this, new object[] { value });

                composeAction?.Invoke(builder);

                return(WithBindingBuilder(builder));
            }
        }