从注册表中删除项目';s容器| C#.NET | IoC |结构图

从注册表中删除项目';s容器| C#.NET | IoC |结构图,c#,.net,inversion-of-control,structuremap,C#,.net,Inversion Of Control,Structuremap,考虑以下代码段: var registry = new Registry(); registry.For<TInterfaceA>().Use<TImplementationA>(); registry.For<TInterfaceB>().Use<TImplementationB>(); registry.For<TInterfaceC>().Use<TImplementationC>(); var container

考虑以下代码段:

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

var container = new Container(registry);

是的,这是可能的。只需在配置表达式上使用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>();
var registry=new registry();
registry.For().Use();
var container=新容器(注册表);
//这会起作用的
var test1=container.GetInstance();
Configure(conf=>conf.For().ClearAll());
//此引发StructureMap.StructureMappConfigurationException异常
//var test2=container.GetInstance();

他们有一个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>();