Quelque chose le long de ces lignes:Est-il possible de supprimer un enregistrement existant du constructeur de conteneur Autofac?
builder.RegisterType<MyType>().As<IType>();
builder.RegisterType<MyType2>().As<IType>();
builder.DeRegisterType<MyType>().As<IType>()
var container = builder.Build();
var types = container.Resolve<IEnumerable<IType>>();
Assert.IsTrue(types.Count == 1);
Assert.IsTrue(types[0].GetType == typeof(MyType2));
Scénario: Je passe par groupe d'assemblées et que je vais, j'inscrire les types mais je veux assurez-vous que je n'ai qu'une mise en œuvre d'un type donné. Je dois le faire avant de créer le conteneur. Je pourrais suivre cela par moi-même mais ce serait bien si Autofac pouvait m'aider un peu.
J'ai une autre raison de vouloir cela: En utilisant RegisterAssemblyTypes, j'obtiens un 'background' par défaut des résolutions 'InstancePerDependencyScope'. Après cela, je veux mettre à jour certains d'entre eux à 'InstancePerLifetimeScope'. Cela fonctionne bien en les réenregistrant jusqu'à ce que je résolve une énumérable d'une certaine interface (par exemple, celle qui est implémentée sur plus d'une classe). Suppression de l'enregistrement «arrière-plan» permettrait cela. –
Pour mon problème particulier, j'ai découvert 'RegisterAssemblyTypes(). Except()' et d'autres méthodes courantes qui peuvent contrôler la sélection et le traitement des types d'assembly enregistrés. –