StructureMap中无法解析的构造函数参数的回退

StructureMap中无法解析的构造函数参数的回退,structuremap,Structuremap,假设我有一节课 public class Foo() { public Foo(Bar bar){} public Foo():this(Bar.Default){} } 我希望StructureMap在容器可以解析bar时使用第一个构造函数重载,但在容器无法解析bar时使用第二个构造函数重载 我如何配置容器来实现这一点,无论是在一般情况下,还是专门针对Foo类?Foo依赖于Bar,因此您应该将其建模为单个构造函数,由您的容器来注入Bar的正确实现 因此,当您配置容器时,您应该

假设我有一节课

public class Foo()
{
    public Foo(Bar bar){}
    public Foo():this(Bar.Default){}
}
我希望StructureMap在容器可以解析bar时使用第一个构造函数重载,但在容器无法解析bar时使用第二个构造函数重载


我如何配置容器来实现这一点,无论是在一般情况下,还是专门针对Foo类?

Foo依赖于Bar,因此您应该将其建模为单个构造函数,由您的容器来注入Bar的正确实现

因此,当您配置容器时,您应该在无法解析bar时应用检测,并且应该使用默认值

        Container cont = new Container(c =>
        {
            if (useDefaultBar)
            {
                c.For<IBar>().Use<Bar>(Bar.Default);
            }
            else
            {
                c.For<IBar>().Use<Bar>();
            }
        });
看见