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); 
       } 
      } 
     } 

例外其中我剛開摹 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. For()。Use();

    公共DefaultRegistry(){ 掃描( 掃描=> { scan.TheCallingAssembly(); //scan.AssembliesFromApplicationBaseDirectory(); scan.WithDefaultConventions(); scan.With(新ControllerConvention()) ; });對於()。使用(); }