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); }
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)); } }