Что-то в этом духе:
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));
Сценарий: я просматриваю кучу сборок и по ходу регистрирую типы, но хочу убедиться, что у меня есть только одна реализация данного типа. Мне нужно сделать это до того, как я создам контейнер. Я мог бы отследить это самостоятельно, но было бы неплохо, если бы Autofac мог мне немного помочь.
InstancePerDependencyScope
разрешениями. После этого я хочу обновить некоторые из них доInstancePerLifetimeScope
. Это прекрасно работает, перерегистрируя их до тех пор, пока я не разрешаю перечисление некоторого интерфейса (например, того, который реализован более чем в одном классе). Удаление «фоновой» регистрации позволит это сделать. - person Josh Gallagher   schedule 11.05.2014RegisterAssemblyTypes().Except<TypeForUpgrading>()
и другие плавные методы, которые могут управлять выбором и обработкой регистрируемых типов сборок. - person Josh Gallagher   schedule 11.05.2014