结构映射依赖注入的问题:没有默认实例注册,不能自动确定
问题描述:
我刚从的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)
答
我的接口和类是在其他项目;所以有两种方法可以解决这个问题。我们可以使用其中任何一种来解决这个问题。
- scan.AssembliesFromApplicationBaseDirectory();
-
For()。Use();
公共DefaultRegistry(){ 扫描( 扫描=> { scan.TheCallingAssembly(); //scan.AssembliesFromApplicationBaseDirectory(); scan.WithDefaultConventions(); scan.With(新ControllerConvention()) ; });对于()。使用(); }