2011-02-28 3 views
0

제네릭 클래스를 해당 생성자에 등록하려고합니다. 좋아요 :StructureMap 생성자를 사용한 일반 클래스 등록

 ObjectFactory.Initialize(
      action => 
      { 
       action.SelectConstructor<IRepository<>>(() => new Repository<>(LifetimeManager.Current)); 
      }); 

하지만 어떻게해야합니까?

참고 : LifetimeManager.Current는 정적 속성입니다. 생성자를 신경 쓰지 않는다면, 이것을 쓸 수 있습니다. action.For(typeof(IRepository<>)).Use(typeof(Repository<>));하지만 오늘 DI를 통해 Repository 클래스 UnitOfWork 매개 변수를 제공해야합니다.

감사합니다.

action => action.For<IUnitOfWork>().Use(() => LifetimeManager.Current)); 
action => action.For(typeof (IRepository<>)).Use(typeof (Repository<>))); 

이 리포지토리 생성자 IUnitOfWork의 매개 변수를 가지고 제공 :

+0

이 게시물을 확인하십시오 .. 그것은 비슷한 질문에 대답 .. http://stackoverflow.com/questions/2824088/passing-constructor-arguments-when-using-structuremap – Chandu

답변

1

나는이 당신을 위해 일한다고 생각합니다. Repository 클래스의 생성자에있는 모든 매개 변수가 컨테이너에 등록되어 있는지 확인하기 만하면됩니다.

리포지토리 클래스에 여러 생성자가없고 특정 클래스를 선택하려는 경우 SelectConstructor 메서드를 사용할 필요가 없습니다.

관련 문제