0

난 그냥 nuget에서 structureMap을 추가 결정하고 DefaultRegistry의이구조지도 의존성 주입 문제 : 없음 기본 인스턴스가 등록되지 않고 자동으로

공용 클래스 DefaultRegistry 같은 파일을 수정할 수 없습니다 : 레지스트리를 { # 지역의 생성자와 소멸자

 public DefaultRegistry() { 
      Scan(
       scan => { 
        // scan.TheCallingAssembly(); 
        scan.AssembliesFromApplicationBaseDirectory(
        filter => filter.FullName.StartsWith("TaskManagement")); 

        scan.WithDefaultConventions(); 
        scan.With(new ControllerConvention()); 
       }); 
      //For<IExample>().Use<Example>(); 
     } 

     #endregion 
    } 
} 

컨트롤러 코드는 내가 뻥하고

namespace TaskManagement.TaskStatus 
     { 
      public class TaskStatusController : Controller 
      { 
       private readonly IGetTaskStatusList _query; 
       public TaskStatusController(IGetTaskStatusList query) 
       { 
        _query = query; 
       } 
       // GET: TaskStatus 
       public ActionResult Index() 
       { 
        var TaskStatus = _query.Execute(); 
        return View(TaskStatus); 
       } 
      } 
     } 

예외입니다 g StructureMap.StructureMapConfigurationException : '없음 기본 인스턴스가 등록되지 않고 자동으로 유형을 판별 할 수없는'Application.TaskStatus.IGetTaskStatusList '

There is no configuration specified for Application.TaskStatus.IGetTaskStatusList 

1.) new TaskStatusController(*Default of IGetTaskStatusList*) 
2.) TaskManagement.TaskStatus.TaskStatusController 
3.) Instance of TaskManagement.TaskStatus.TaskStatusController 
4.) Container.GetInstance(TaskManagement.TaskStatus.TaskStatusController) 

답변

0

내 인터페이스와 클래스가 다른 프로젝트에; 따라서이 문제를 해결할 수있는 두 가지 방법이 있습니다. 우리는이 중 하나를 사용하여이를 해결할 수 있습니다.

  1. scan.AssembliesFromApplicationBaseDirectory();
  2. (). Use();

    공개 DefaultRegistry() { 스캔 (주사 => { scan.TheCallingAssembly(); //scan.AssembliesFromApplicationBaseDirectory(); scan.WithDefaultConventions(); scan.With (새 ControllerConvention()) ; }}); For(). Use(); }