2016-07-06 3 views
2

StructureMap 4.0에 문제가 있습니다. StructureMap 3.0을 사용하여 작업 할 때 ObjectFactory를 사용하여 모든 인스턴스를 구성하므로 솔루션 내부의 자체 인터페이스를 통해 인스턴스를 얻는 것이 매우 쉽습니다. 다른 클래스에서StructureMap 4.0의 기존 컨테이너 가져 오기

  • , ObjectFactory.Initialize (X => {x.For()() 사용합니다.} 예를 들어 다음 global.cs에서

    1. , 나는 아래와 같이 선언 예를 들어, Family.cs, 그것은 Peson의 인스턴스를 쉽게 얻을 : VAR 사람 = ObjectFactory.GetInstance(); 그러나

    , 나는 4.0 StructureMap를 업데이트 한 후 문제를 가지고 대신 컨테이너를 사용합니다. ObjectFactory의 기존 컨테이너를 얻는 방법을 찾으십시오.이 코드가 잘못되었음을 의미합니다. var person = container.GetInstance();

    Container를 global.cs에 정적 변수로 선언하면 Family.cs 클래스에서 컨테이너에 액세스 할 수 있습니다. 나는 이런 식으로 싫어. global.cs에 선언 된 기존 컨테이너를 가져 와서 ObjectFactory와 같은 컨테이너 작업을 원하지만 어떻게 수행해야할지 모르겠다.

  • 답변

    3

    이렇게하는 방법은 IContainer을 클래스의 생성자 인수로 사용하는 것입니다. 자세한 내용은 여기를 참조하십시오 StructureMap

    +0

    나는 당신의 뜻을 이해합니다. 그러나, 내 프로젝트는 3 층 구조를 따라 만들어졌습니다. IContainer는 Business Layer에서 선언되지만 DataAccess Layer에서 IContainer에 액세스하려고합니다. 어떻게해야합니까? (DataAccess 계층이 비즈니스 계층 아래 있다는 것을 상기합니다) –

    +0

    무엇을 의미합니까? IContainer가 비즈니스 계층이 아니라 StructureMap에서 선언되었습니다. – erikkallen