public override void Load() { foreach (var descriptor in _serviceDescriptors) { IBindingWhenInNamedWithOrOnSyntax <object> binding; if (descriptor.ImplementationType != null) { binding = Bind(descriptor.ServiceType).To(descriptor.ImplementationType); } else if (descriptor.ImplementationFactory != null) { binding = Bind(descriptor.ServiceType).ToMethod(context => { var serviceProvider = context.Kernel.Get <IServiceProvider>(); return(descriptor.ImplementationFactory(serviceProvider)); }); } else { binding = Bind(descriptor.ServiceType).ToConstant(descriptor.ImplementationInstance); } switch (descriptor.Lifecycle) { case LifecycleKind.Singleton: binding.InSingletonScope(); break; case LifecycleKind.Scoped: binding.InKScope(); break; case LifecycleKind.Transient: binding.InTransientScope(); break; } } Bind <IServiceProvider>().ToMethod(context => { var resolver = context.Kernel.Get <IResolutionRoot>(); var inheritedParams = context.Parameters.Where(p => p.ShouldInherit); var scopeParam = new KScopeParameter(_fallbackProvider); inheritedParams = inheritedParams.AddOrReplaceScopeParameter(scopeParam); return(new NinjectServiceProvider(resolver, inheritedParams.ToArray())); }).InKScope(); Bind <IServiceScopeFactory>().ToMethod(context => { return(new NinjectServiceScopeFactory(context)); }).InKScope(); if (_fallbackProvider != null) { Kernel.Components.Add <IMissingBindingResolver, ChainedMissingBindingResolver>(); } }
internal static IEnumerable <IParameter> AddOrReplaceScopeParameter( this IEnumerable <IParameter> parameters, KScopeParameter scopeParameter) { return(parameters .Where(p => p.Name != typeof(KScopeParameter).FullName) .Concat(new[] { scopeParameter })); }
public NinjectServiceScope( IResolutionRoot resolver, IEnumerable <IParameter> inheritedParameters) { _scope = new KScopeParameter(); inheritedParameters = inheritedParameters.AddOrReplaceScopeParameter(_scope); _serviceProvider = new NinjectServiceProvider(resolver, inheritedParameters.ToArray()); }
public override void Load() { foreach (var descriptor in _serviceDescriptors) { IBindingWhenInNamedWithOrOnSyntax<object> binding; if (descriptor.ImplementationType != null) { binding = Bind(descriptor.ServiceType).To(descriptor.ImplementationType); } else { binding = Bind(descriptor.ServiceType).ToConstant(descriptor.ImplementationInstance); } switch (descriptor.Lifecycle) { case LifecycleKind.Singleton: binding.InSingletonScope(); break; case LifecycleKind.Scoped: binding.InKScope(); break; case LifecycleKind.Transient: binding.InTransientScope(); break; } } Bind<IServiceProvider>().ToMethod(context => { var resolver = context.Kernel.Get<IResolutionRoot>(); var inheritedParams = context.Parameters.Where(p => p.ShouldInherit); var scopeParam = new KScopeParameter(_fallbackProvider); inheritedParams = inheritedParams.AddOrReplaceScopeParameter(scopeParam); return new NinjectServiceProvider(resolver, inheritedParams.ToArray()); }).InKScope(); Bind<IServiceScopeFactory>().ToMethod(context => { return new NinjectServiceScopeFactory(context); }).InKScope(); if (_fallbackProvider != null) { Kernel.Components.Add<IMissingBindingResolver, ChainedMissingBindingResolver>(); } }
public NinjectServiceScope( IResolutionRoot resolver, IEnumerable <IParameter> inheritedParameters, IServiceProvider parentFallbackProvider) { if (parentFallbackProvider != null) { var scopeFactory = parentFallbackProvider.GetServiceOrDefault <IServiceScopeFactory>(); if (scopeFactory != null) { _fallbackScope = scopeFactory.CreateScope(); _scope = new KScopeParameter(_fallbackScope.ServiceProvider); } } if (_scope == null) { _scope = new KScopeParameter(parentFallbackProvider); } inheritedParameters = inheritedParameters.AddOrReplaceScopeParameter(_scope); _serviceProvider = new NinjectServiceProvider(resolver, inheritedParameters.ToArray()); }
public NinjectServiceScope( IResolutionRoot resolver, IEnumerable<IParameter> inheritedParameters, IServiceProvider parentFallbackProvider) { if (parentFallbackProvider != null) { var scopeFactory = parentFallbackProvider.GetServiceOrDefault<IServiceScopeFactory>(); if (scopeFactory != null) { _fallbackScope = scopeFactory.CreateScope(); _scope = new KScopeParameter(_fallbackScope.ServiceProvider); } } if (_scope == null) { _scope = new KScopeParameter(parentFallbackProvider); } inheritedParameters = inheritedParameters.AddOrReplaceScopeParameter(_scope); _serviceProvider = new NinjectServiceProvider(resolver, inheritedParameters.ToArray()); }