.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();
});
但是没有用。。。建议