我有一个界面:
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;
}
在我的StructureMap初始化中,我正在做:
Container c = new Container (x =>
{
x.For<IFoo> ().TheDefaultIsConcreteType<CompositeFoo> ();
x.Scan (s => {
s.WithDefaultConventions ();
s.ExcludeType<CompositeFoo> ();
s.AddAllTypes<IFoo> ();
});
});
但是,在尝试解析IFoo的实例时,我得到了一个关于双向(循环)依赖的例外。
我试图对CompositeFoo进行条件注册:
x.For<IGlobalConfiguration> ().ConditionallyUse (c =>
{
c.If (ctx => ctx.ParentType != typeof (CompositeGlobalConfiguration)})
.ThenIt.Is.Type<CompositeGlobalConfiguration> ();
});
但无济于事...建议?