public interface IFoo{}
public class Foo1 : IFoo {
public Foo1(int id){}
public Foo1(string val){}
}
public class Foo2 : IFoo {
public Foo2(int id){}
public Foo2(string val){}
}
相应的注册表设置如下...
ForRequestedType<IFoo>().TheDefault.Is.ConstructedBy(()=>new Foo1("some string val"));
InstanceOf<IFoo>().Is.OfConcreteType<Foo2>();
我们随后将IFoo用作其他东西的参数...例如:
public interface IBar{}
public class Bar1:IBar {
public Bar1(IFoo foo){}
}
public class Bar2:IBar {
public Bar2(IFoo foo){}
}
注册步骤如下:...
ForRequestedType<IBar>().TheDefault.Is.OfConcreteType<Bar1>().CtorDependency<IFoo>().Is<Foo1>();
现在我想让Bar2使用Foo2,并且我希望Foo2使用构造函数"new Foo2(1)"。我已经尝试过:
InstanceOf<Foo2>().Is.ConstructedBy(()=> new Foo2(1));
但这种方法失败了。如何使用StructureMap注册表使其正常工作(如果有可能)?