 <p>There's 2 ways you could solve this that don't require your application code to be aware of your container.</p> <p>The first method, instead replacing the registered instance of <code>UserModel</code> with a new instance, you'd just update the registered instances properties to the new values. This is probably the simplest, if your type is mutable and not overly complex.</p> <p>This second method would be appropriate if updating the original <code>UserModel</code> instance is undesirable or impossible. Basically, just add a layer of indirection:</p> <pre class="lang-cs prettyprint-override"><code>// ------------------------- // add this class: public class Changeable&lt;T&gt; { public T Value { get; set; } } // ------------------------- // set up registrations like so: // register the default value like so builder.RegisterInstance( new Changeable&lt;UserModel&gt; { Value = new UserModel { Id = Migration001.GuestUserId, Email = Migration001.GuestEmail, PasswordHash = Migration001.GuestPassword } }); // register UserModel directly, which can be used by all the classes that don't // need to change the instance builder.Register(c =&gt; c.Resolve&lt;Changeable&lt;UserModel&gt;&gt;().Value); </code></pre> <p>Now your service classes can take a constructor parameter of either <code>Changeable&lt;UserModel&gt;</code> or just <code>UserModel</code> depending on whether they need to be able to change the instance or not, with no more direct reference to the container.</p>