Удалить элемент из контейнера реестра |C # .NET |IoC |StructureMap - PullRequest
0 голосов
/ 18 мая 2018

Рассмотрим следующий сегмент кода:

var registry = new Registry();
registry.For<TInterfaceA>().Use<TImplementationA>();
registry.For<TInterfaceB>().Use<TImplementationB>();
registry.For<TInterfaceC>().Use<TImplementationC>();

var container = new Container(registry);

Есть ли способ, которым я могу удалить registry, содержащий TInterfaceB, который разрешается в TImplementationB.

Дляэкземпляр:

container.RemoveRegistry(TInterfaceB );

1 Ответ

0 голосов
/ 18 мая 2018

Да, это возможно.Просто используйте метод ClearAll для выражения конфигурации.

Пример:

var registry = new Registry();
registry.For<TInterfaceA>().Use<TImplementationA>();

var container = new Container(registry);
//this would be working
var test1 = container.GetInstance<TInterfaceA>();

container.Configure(conf => conf.For<TInterfaceA>().ClearAll());
//this throw StructureMap.StructureMapConfigurationException
//var test2 = container.GetInstance<TInterfaceA>();

Полное описание из документации

...