2010-02-13 8 views
1

DefaultConstructor 특성과 함께 사용할 생성자를 지정할 수 있음을 알고 있습니다. 그러나 어떤 경우에는 다른 생성자를 사용할 수 있기를 원합니다. StructureMap과 함께 두 생성자를 등록 할 수있는 방법이 있습니까? 그렇다면 ObjectFactory.GetInstance()를 호출 할 때 사용할 생성자를 선택하십시오.StructureMap과 함께 사용할 생성자 선택

+1

어떤 언어입니까? –

+0

나는 생각한다 .net - http://structuremap.sourceforge.net/ 그래서 re-tagged했다. –

+0

예, .net (C#보다 구체적으로). 태그를 다시 지정해 주셔서 감사합니다. – Tevin

답변

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)); 
    } 
} 
관련 문제