2012-12-11 1 views
5

다양한 사용자 인터페이스 응용 프로그램이 추가되는 중앙 집중식 StructureMap 구성이 있습니다. 나는 "코어"설정을 수정할 필요가 없었습니다. 특정 응용 프로그램의 핵심 구성을 수정/제거해야하는 경우가 있습니다. 물론 코어 구성 코드를 다른 응용 프로그램으로 옮길 수는 있습니다.하지만 그렇게하기 전에 StructureMap API를 통해 확실한 것을 놓치지 않았는지 확인하고 싶었습니다. 아래는 내 핵심 구성의 축약 버전이 : 나는 IValidationRule을 폐쇄 유형에 대한 구성을 제거하기 좋아하지만, 가능한 아무것도 들고 오지 아직 것이 하나의 응용 프로그램에 대한 런타임에서이전에 구성된 StructureMap 구성을 어떻게 수정할 수 있습니까?

ObjectFactory.Initialize(cfg => 
{ 
    cfg.Scan(scan => 
     { 
      scan.Assembly("Core"); 
      scan.WithDefaultConventions(); 

      scan.ConnectImplementationsToTypesClosing(typeof(IValidationRule<>)); 
      // more after this.... 
     } 
} 

. 이젝션 방법은 모두 싱글 톤 (singleton) 의미를 중심으로하는 것처럼 보입니다. 나는 싱글 다루고 있지 않다 때문에 다음은 작동하지 않습니다 내가 IValidationRule 초 동안 보이지 내 StructureMap 구성을 수정할 수있는 방법은

ObjectFactory.Model.For(typeof(IValidationRule<>)).EjectAndRemoveAll(); //no work 

ObjectFactory.Model.EjectAndRemove(typeof(IValidationRule<>)); //nor does this 

있습니까? IValidationRule s의 non-singleton 인스턴스를 추출 할 수 있습니까? StructureMap 구성을 수정하기위한 다른 옵션이 있습니까?

답변

2

다음과 같은 경우는 어떻습니까? 나는 이것이 효과가 있다고 생각한다.

ObjectFactory.Model.EjectAndRemoveTypes(match 
    => match != null && match.GetInterfaces().Any(i 
     => i.Name.Contains("IValidationRule"))); 
+0

ObjectFactory가 더 이상 사용되지 않는 StructureMap3에서 이와 같은 기능을 사용할 수 있습니까? – rexdefuror

관련 문제