title: Ninject Kernel.Get<T> Instance Creation
body: <p>Today I discovered a bug in my code base, where an injected dependency was supposedly out living the class it was being injected into. When I expected a new instance of the dependency to always be injected, i was getting an old one. I managed to clean up the bug by removing the line <code>this.Kernel.Get&lt;IA&gt;()</code> from the simplified snippet below. While this isn't the complete picture of the project, it is the exact configuration used for the perpetrator.</p>
  <pre><code>internal sealed class MyNinjectModule : NinjectModule
  {
      public override void Load()
      {
          this.Bind&lt;IA&gt;().To&lt;A&gt;();
  
          this.Bind&lt;B&gt;().ToSelf()
              .WithConstructorArgument(this.Kernel.Get&lt;IDependencyOne&gt;())
              .WithConstructorArgument(this.Kernel.Get&lt;IDependencyTwo&gt;())
              .WithConstructorArgument(this.Kernel.Get&lt;IA&gt;())
              .WithConstructorArgument&lt;uint&gt;(50U);
      }
  </code></pre>
  <p>So while I would always get a new instance of <code>B</code> I would get an old instance of <code>IA</code>. Could anyone help me understand the lifecycle for the <code>.Get&lt;T&gt;</code> extension method from <code>IResolutionRoot</code>? I always assumed that a call to <code>.Get&lt;T&gt;</code> would generate an instance according to the previous configuration as set out by  my bindings. Is this correct behavior for Ninject?</p>
  <h3>Information</h3>
  <ul>
  <li>Using Ninject 3.2.2.0</li>
  <li>C# 5, .Net 4.5 Framework</li>
  <li>WPF Application</li>
  </ul>