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()) ; });对于()。使用(); }