2009-12-22 2 views
1

내가 오류를 받고 있어요 설정 :StructureMap 오류 (202)는 IOC 컨테이너

StructureMap 예외 코드 : 202 PluginFamily MVCPoco.Services.IService, MVCPoco.Services, 버전 = 1.0.0.0, 문화에 대해 정의 된 기본 인스턴스 없다 = 중립 PublicKeyToken = NULL

Line 96:   { 
Line 97:    Type controllerType = base.GetControllerType(context, controllerName); 
Line 98:    return ObjectFactory.GetInstance(controllerType) as IController; 
Line 99:   } 
Line 100: } 

에러 라인 98

어떤 아이디어 발생? Visual Studio 2010과 함께 제공되는 asp.net MVC 2 미리보기 2를 사용하고 있습니다.

+0

개인 정적 무효 InitializeStructureMap (IInitializationExpression의 X) { x.Scan (Y => { y로 전환 한 정확하게 structuremap을 설정 한 .Assembly ("MVCPoco.Core"); y.Assembly ("MVCPoco.Data"); y.With (); }); 기본 이름 규칙을 사용하기 위해이 코드를 사용하고 있습니다 ... 아마도 내가 뭔가 잘못하고 있습니다. – Diego

+0

SM 2.5.2를 사용하고 있습니다. 이러한 메서드는 현재 사용중인 컨텍스트에 noes가 없습니다. x. (). 사용 (); y.With (새 SingleImplementationScanner()); – Diego

답변

0

ObjectFactory.Configure 함수 내에서 응용 프로그램 시작시 삽입 할 형식을 등록해야합니다. Structure Map의 IOC Container 구성 사이트에있는 문서를 확인하십시오.

앤드류 인스턴스화하려고하는 컨트롤러가 IService에 생성자 의존성이

1

. StructureMap을 구성 할 때 IService의 구체적인 구현을 등록해야합니다. DefaultConventionScanner는 해당 인터페이스와 동일한 이름을 가진 구현 만 등록합니다 (앞에 I가 없음). 따라서 IService의 구현 이름이 Service가 아니면 자동으로 등록되지 않습니다. 명시 적으로 등록하여 inititalization 스크립트에 이런 식으로 뭔가를 추가하려면 : 최신 소스 코드에서 StructureMap를 실행하는 경우

x.For<IService>().Use<MyService>(); 

또는, 당신은 당신의 스캔() 표현에 SingleImplementationScanner를 사용할 수있다 :

y.With(new SingleImplementationScanner()); 

그리고 구체화 된 유형이 이름과 상관없이 스캔 된 코드에서 인터페이스를 구현하는 유일한 경우 자동으로 등록됩니다.

0

음, 그냥있어서

public static void Configure() 
     { 
      ObjectFactory.Initialize(x => 

      x.AddRegistry(new IOCRegistry())); // in here i have registered my dependencies with for method. 

     }