Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove(unregister) registered instance from Unity mapping?

I meet one problem that i can't solve now. I have the following:

UnityHelper.DefaultContainer.RegisterInstance(typeof(IMyInterface), "test", instance); 

where UnityHelper.DefaultContainer is my helper for getting unity container with loaded configuration.

here I registered instance as an instance of IMyInterface.

So anywhere( some time after using) I want to remove this mapping. Remove it at all. How I can do it?

I have tried:

UnityHelper.DefaultContainer.Teardown(instance) 

but is was unsuccessful and the following code returns instance anyway:

UnityHelper.DefaultContainer.ResolveAll<IMyInterface>() 
like image 242
bug0r Avatar asked Apr 24 '10 17:04

bug0r


2 Answers

I had the same problem and just removed the registrations of the ContainerControlledLifetimeManager from my Container:

foreach (var registration in container.Registrations     .Where(p => p.RegisteredType == typeof(object)                 && p.Name == name                 && p.LifetimeManager.Type == typeof(ContainerControlledLifetimeManager))) {     registration.LifetimeManager.RemoveValue(); } 
like image 119
Johannes Wanzek Avatar answered Sep 20 '22 07:09

Johannes Wanzek


I think that is what you are looking for.

var lifetimeManager = new TransientLifetimeManager(); UnityHelper.DefaultContainer.RegisterInstance(typeof(IMyInterface), "test", instance, lifetimeManager); lifetimeManager.RemoveValue(); 
like image 37
er-v Avatar answered Sep 19 '22 07:09

er-v