.net Structuremap:注册所有类型以及聚合所有其他实例的默认实例时出现问题

.net Structuremap:注册所有类型以及聚合所有其他实例的默认实例时出现问题,.net,dependency-injection,structuremap,.net,Dependency Injection,Structuremap,我有一个界面: public interface IFoo { void Foo (): } 以及一个IFoo实现,旨在聚合StructureMap扫描注册的所有其他IFoo实例: public class CompositeFoo : IFoo { public void Foo () { foreach (IFoo f in _foos) f.Foo (); } public C

我有一个界面:

public interface IFoo {
    void Foo ():
}
以及一个IFoo实现,旨在聚合StructureMap扫描注册的所有其他IFoo实例:

public class CompositeFoo : IFoo
{
      public void Foo ()
      {
           foreach (IFoo f in _foos)
                f.Foo ();
      }

      public CompositeFoo (IEnumerable<IFoo> foos)
      {
           _foos = foos;
      }

      IEnumerable<IFoo> _foos;
}
公共类compositefo:IFoo
{
公共图书馆
{
foreach(ifoof in_foos)
f、 Foo();
}
公共合成(IEnumerable foos)
{
_foos=foos;
}
IEnumerable\u foos;
}
在我的StructureMap初始化中,我正在执行以下操作:

Container c = new Container (x =>
{
    x.For<IFoo> ().TheDefaultIsConcreteType<CompositeFoo> ();
    x.Scan (s => {
        s.WithDefaultConventions ();
        s.ExcludeType<CompositeFoo> ();
        s.AddAllTypes<IFoo> ();
    });
});
Container c=新容器(x=>
{
x、 For()。默认混凝土类型();
x、 扫描(s=>{
s、 使用默认约定();
s、 ExcludeType();
s、 AddAllTypes();
});
});
然而,当尝试解析IFoo实例时,我得到了一个关于双向(循环)依赖性的异常

我已尝试对CompositeFo进行有条件注册:

x.For<IGlobalConfiguration> ().ConditionallyUse (c =>
{
    c.If (ctx => ctx.ParentType != typeof (CompositeGlobalConfiguration)})
        .ThenIt.Is.Type<CompositeGlobalConfiguration> ();
});
x.For().ConditionallyUse(c=>
{
c、 If(ctx=>ctx.ParentType!=typeof(CompositeGlobalConfiguration)})
.ThenIt.Is.Type();
});
但是没有用。。。建议