我刚刚从 nuget 添加了 StructureMap 并像这样修改了 DefaultRegistry 文件
公共类DefaultRegistry:注册表{ #region 构造函数和析构函数
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<IGetTaskStatusList>().Use<GetTaskStatusList>();
示例:
public DefaultRegistry() {
Scan ( scan => {
scan.TheCallingAssembly();
//scan.AssembliesFromApplicationBaseDirectory();
scan.WithDefaultConventions();
scan.With(new ControllerConvention());
});
For<IGetTaskStatusList>().Use<GetTaskStatusList>();
}