/// <summary> /// Adds the dependency. /// </summary> /// <param name="serviceType">Type of the service to bind to.</param> /// <param name="concreteType">Type of the concrete class to create.</param> /// <param name="lifetime">The lifetime of the registration.</param> protected override void AddDependencyCore(Type serviceType, Type concreteType, DependencyLifetime lifetime) { var binding = CreateBinding(serviceType, lifetime); if (lifetime == DependencyLifetime.PerRequest) { binding.ProviderCallback = ctx => new PerRequestProvider(concreteType, ctx.Kernel.Components.Get <IPlanner>(), ctx.Kernel.Components.Get <ISelector>()); binding.Target = BindingTarget.Provider; } else { var bindingBuilder = new BindingBuilder <object>(binding, _kernel); var bindingScope = bindingBuilder.To(concreteType); if (lifetime == DependencyLifetime.Singleton) { bindingScope.InSingletonScope(); } } _kernel.AddBinding(binding); }
/// <summary> /// Adds the aliases of component to the binding configurations. /// </summary> /// <param name="component">The component.</param> /// <param name="bindingConfigurations">The binding configurations.</param> void AddAliasesOfComponentToBindingConfigurations(Type component, IEnumerable <IBindingConfiguration> bindingConfigurations) { var services = GetAllServiceTypesFor(component).Where(t => t != component); foreach (var service in services) { foreach (var bindingConfiguration in bindingConfigurations) { kernel.AddBinding(new Binding(service, bindingConfiguration)); } } }
private static void CacheResolutionIfNewlyResolved([NotNull] IKernel kernel, [NotNull] Type interfaceType, Type interfaceArgument, Type templateArgument, [NotNull] IEnumerable <IBinding> bindings) { if (templateArgument == interfaceArgument) { return; } // ReSharper disable once PossibleNullReferenceException => Does not return null according to MSDN documentation. foreach (var binding in bindings.ToList()) { if (binding != null) { kernel.AddBinding(interfaceType, binding.BindingConfiguration); } } }
private static void RegisterType(IKernel kernel, Type type, IEnumerable<INinjectRegistrationAttribute> attributes) { var builder = new BindingBuilder() as IBindingBuilder; foreach (INinjectRegistrationAttribute attribute in attributes) { builder = attribute.Register(builder); } foreach (var service in builder.Services) { var binding = new Binding(service); binding.BindingConfiguration.ScopeCallback = builder.ScopeCallback; binding.BindingConfiguration.ProviderCallback = StandardProvider.GetCreationCallback(type); binding.BindingConfiguration.Target = BindingTarget.Type; kernel.AddBinding(binding); } }
public void AddBinding(IBinding binding) { _kernel.AddBinding(binding); }