문제

이것을 StructureMap 그룹에도 게시했습니다. 우리는 지난 주에 StructureMap을 사용하기 시작했고 실제로 파고 들고 있습니다.


나는 단순한 것을 놓치고 있다고 확신합니다.

공장 내에서 SM을 사용하여 다음 코드를 모방하려고합니다. 공장 클래스에서 컨테이너 의존성이 있어도 괜찮습니다. 이 실의 합의는 이것이 올바른 접근법 인 것 같습니다. http://www.codeplex.com/unity/thread/view.aspx?threadid=29697. 더 나은 방법이 있다면, 나는 이것을 달성하는 다른 방법을들을 수 있습니다.

기본적으로 내 공장의 Create Method는 열거적인 값을 가져옵니다 (실제 유형 일 수 있지만 컨테이너에 의해 제어되는 것이 아닙니다). 올바른 인스턴스를 반환해야합니다. 반환 유형은 SM에 의해 관리됩니다. 나는 많은 사람들이있을 수 있기 때문에 공장의 CTOR에 모든 분리를 넣고 싶지 않습니다.

public class PreSaveActionFactory : IPreSaveActionFactory 
{ 
    public IPreSaveAction Create(MyEnumType enumType) 
    { 
        IPreSaveAction action; 

        switch (enumType) 
        { 
            case MyEnumType.Value1: 
                //imagine this has 3 Ctor arguments 
                action = new Value1PreSaveAction(); 
                break; 
            case MyEnumType.Value2: 
                //and imagine this has 4 completely different Ctor arguments 
                action = new Value2PreSaveAction(); 
                break; 
            default: 
                throw new NotSupportedException(); 
        } 

        return action; 
    } 
} 

나는 문서의 오른쪽 섹션에 링크가 괜찮습니다. 당신은 저를 위해 코드를 작성할 필요가 없습니다 (불평하지는 않지만 :)). 공장의 모습과 레지스트리 코드도 알고 싶습니다.

도움이 되었습니까?

해결책

이런 식으로 시도한 적이 없지만 .withName () 메소드를 사용하여 인스턴스 이름을 제공 한 다음 ObjectFactory.getNamedInstance ()를 통해 인스턴스를 얻을 수 있습니다.

또 다른 접근법 (내가 성공적으로 사용한)은 사전을 만드는 것입니다. 거기에서 유형을 찾은 다음 ObjectFactory를 통해 해당 유형의 인스턴스를 얻으십시오.

다른 팁

등록은 사용하고 싶다고 생각합니다. 조건부 객체 구성.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top