2010-02-13 26 views
1

我知道我可以指定一个构造函数来与DefaultConstructor属性一起使用。但是,我也希望能够在某些情况下使用不同的构造函数。有什么办法可以注册这两个构造函数与StructureMap,然后选择哪一个使用时调用ObjectFactory.GetInstance()?选择使用哪个构造函数与StructureMap

+1

哪种语言? – 2010-02-13 18:03:11

+0

我想.net - http://structuremap.sourceforge.net/所以有重新标记。 – 2010-02-13 18:05:09

+0

是的.net(更具体地说C#)。感谢您重新标记。 – Tevin 2010-02-14 17:43:53

回答

1

我不相信你可以在StructureMap中做到这一点。你可以把你正在寻找的独立构造函数放到适配器类中吗?然后你的代码可以依赖于必要的适配器类。

public class FirstBehavior : IBehavior 
{ 
    private WrappedClass _wrappedClass; 
    public FirstBehavior() 
    { 
     _wrappedClass = new WrappedClass(<first constructor>) 
    } 
} 

public class SecondBehavior : IBehavior 
{ 
    private WrappedClass _wrappedClass; 
    public SecondBehavior() 
    { 
     _wrappedClass = new WrappedClass(<second constructor>) 
    } 
} 

[TestFixture] 
public class Test 
{ 
    [Test] 
    public void configure_container() 
    { 
     var container = new Container(config => 
     { 
      config.For<IBehavior>().Use<FirstBehavior>().Named("first"); 
      config.For<IBehavior>().Use<SecondBehavior>().Named("second"); 
     }); 

     container.GetInstance<IBehavior>("first").ShouldBeOfType(typeof(FirstBehavior)); 
     container.GetInstance<IBehavior>("second").ShouldBeOfType(typeof(SecondBehavior)); 
    } 
} 
相关问题