From b60dcc27e34151c94e755fe0e07355602580e11d Mon Sep 17 00:00:00 2001 From: Remo Gloor Date: Wed, 23 May 2012 12:49:30 +0200 Subject: [PATCH] Simplify Default Scope implementation --- ReleaseNotes.txt | 1 + src/Ninject/Planning/Bindings/Binding.cs | 12 +----------- src/Ninject/Planning/Bindings/BindingBuilder.cs | 1 + .../Planning/Bindings/BindingConfiguration.cs | 8 +------- src/Ninject/Syntax/BindingRoot.cs | 10 +++++----- 5 files changed, 9 insertions(+), 23 deletions(-) diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt index b3f36d95..6c6272d0 100644 --- a/ReleaseNotes.txt +++ b/ReleaseNotes.txt @@ -1,4 +1,5 @@ Version 3.0.1 +- Add: The default scope can be changed in the NinjectSettings - Change: Open generics can now be passed to WhenInjectedInto - Bugfix: Fixed race condition in the GarbageCollectionCachePruner diff --git a/src/Ninject/Planning/Bindings/Binding.cs b/src/Ninject/Planning/Bindings/Binding.cs index ea0f4974..6d645feb 100644 --- a/src/Ninject/Planning/Bindings/Binding.cs +++ b/src/Ninject/Planning/Bindings/Binding.cs @@ -27,21 +27,11 @@ public class Binding : IBinding /// /// The service that is controlled by the binding. public Binding(Type service) - : this(service, StandardScopeCallbacks.Transient) - { - } - - /// - /// Initializes a new instance of the class. - /// - /// The service that is controlled by the binding. - /// The scope callback for the service. - public Binding(Type service, Func scopeCallback) { Ensure.ArgumentNotNull(service, "service"); this.Service = service; - this.BindingConfiguration = new BindingConfiguration(scopeCallback); + this.BindingConfiguration = new BindingConfiguration(); } /// diff --git a/src/Ninject/Planning/Bindings/BindingBuilder.cs b/src/Ninject/Planning/Bindings/BindingBuilder.cs index bba7c843..7f341bfb 100644 --- a/src/Ninject/Planning/Bindings/BindingBuilder.cs +++ b/src/Ninject/Planning/Bindings/BindingBuilder.cs @@ -51,6 +51,7 @@ public BindingBuilder(IBindingConfiguration bindingConfiguration, IKernel kernel this.BindingConfiguration = bindingConfiguration; this.Kernel = kernel; this.ServiceNames = serviceNames; + this.BindingConfiguration.ScopeCallback = kernel.Settings.DefaultScopeCallback; } /// diff --git a/src/Ninject/Planning/Bindings/BindingConfiguration.cs b/src/Ninject/Planning/Bindings/BindingConfiguration.cs index 968718ec..05407779 100644 --- a/src/Ninject/Planning/Bindings/BindingConfiguration.cs +++ b/src/Ninject/Planning/Bindings/BindingConfiguration.cs @@ -36,18 +36,12 @@ public class BindingConfiguration : IBindingConfiguration /// Initializes a new instance of the class. /// public BindingConfiguration() - : this(StandardScopeCallbacks.Transient) { } - - /// - /// Initializes a new instance of the class. - /// - public BindingConfiguration(Func scopeCallback) { this.Metadata = new BindingMetadata(); this.Parameters = new List(); this.ActivationActions = new List>(); this.DeactivationActions = new List>(); - this.ScopeCallback = scopeCallback ?? StandardScopeCallbacks.Transient; + this.ScopeCallback = StandardScopeCallbacks.Transient; } /// diff --git a/src/Ninject/Syntax/BindingRoot.cs b/src/Ninject/Syntax/BindingRoot.cs index 8f26e78e..254a3997 100644 --- a/src/Ninject/Syntax/BindingRoot.cs +++ b/src/Ninject/Syntax/BindingRoot.cs @@ -51,7 +51,7 @@ public IBindingToSyntax Bind() { Type service = typeof(T); - var binding = new Binding(service, KernelInstance.Settings.DefaultScopeCallback); + var binding = new Binding(service); this.AddBinding(binding); return new BindingBuilder(binding, this.KernelInstance, service.Format()); @@ -65,7 +65,7 @@ public IBindingToSyntax Bind() /// The fluent syntax public IBindingToSyntax Bind() { - var firstBinding = new Binding(typeof(T1), KernelInstance.Settings.DefaultScopeCallback); + var firstBinding = new Binding(typeof(T1)); this.AddBinding(firstBinding); this.AddBinding(new Binding(typeof(T2), firstBinding.BindingConfiguration)); var servceNames = new[] { typeof(T1).Format(), typeof(T2).Format() }; @@ -82,7 +82,7 @@ public IBindingToSyntax Bind() /// The fluent syntax public IBindingToSyntax Bind() { - var firstBinding = new Binding(typeof(T1), KernelInstance.Settings.DefaultScopeCallback); + var firstBinding = new Binding(typeof(T1)); this.AddBinding(firstBinding); this.AddBinding(new Binding(typeof(T2), firstBinding.BindingConfiguration)); this.AddBinding(new Binding(typeof(T3), firstBinding.BindingConfiguration)); @@ -101,7 +101,7 @@ public IBindingToSyntax Bind() /// The fluent syntax public IBindingToSyntax Bind() { - var firstBinding = new Binding(typeof(T1), KernelInstance.Settings.DefaultScopeCallback); + var firstBinding = new Binding(typeof(T1)); this.AddBinding(firstBinding); this.AddBinding(new Binding(typeof(T2), firstBinding.BindingConfiguration)); this.AddBinding(new Binding(typeof(T3), firstBinding.BindingConfiguration)); @@ -124,7 +124,7 @@ public IBindingToSyntax Bind(params Type[] services) throw new ArgumentException("The services must contain at least one type", "services"); } - var firstBinding = new Binding(services[0], KernelInstance.Settings.DefaultScopeCallback); + var firstBinding = new Binding(services[0]); this.AddBinding(firstBinding); foreach (var service in services.Skip(1))