2009-04-23 11 views
1

Je ne connais que très peu AutoFac, et j'ai demandé si la fonctionnalité détaillée ci-dessous était possible avec elle, et elle semblait 'pas exactement'. Connaissez-vous un conteneur avec lequel cela serait possible?Conteneur IOC .NET qui permet de supprimer des enregistrements

[TestFixture] 
public class SomeCunningTests 
{ 
    class SomeType  {  } 

    [Test] 
    public void TestRegistrationScope() 
    { 
     var container = new IocContainerOfSomeKind(); 
     using (new RegistrationScope(container, new SomeType())) 
     { 
      Assert.IsTrue(container.IsRegistered(typeof(SomeType))); 
     } 
     Assert.IsFalse(container.IsRegistered(typeof(SomeType))); 
    } 

    public class RegistrationScope<T> : IDisposable 
    { 
     public RegistrationScope(IocContainerOfSomeKind container, T instance) 
     { 
      //code here for registering instance 
     } 
     public void Dispose() 
     { 
      //unregister instance somehow 
     } 
    } 
} 

Répondre

1

MEF fonctionnerait avec ce scénario. Je crois que tout ce que vous devez faire est d'utiliser un catalogue AggregateCatalog pour votre catalogue, qui offre la possibilité d'ajouter et de retirer de votre catalogue à l'exécution, car il expose un ComposablePartCatalogCollection.

Le catalogue est essentiellement le registre des types utilisés pour la composition.

Questions connexes