Проблема внедрения зависимости структурной карты: экземпляр по умолчанию не зарегистрирован и не может быть определен автоматически
Я просто добавил StructureMap из Nuget и изменил файл DefaultRegistry, как это
открытый класс DefaultRegistry: Registry { #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)
1 ответ
Мой интерфейс и класс находится в другом проекте; так что есть два способа решить эту проблему. Мы можем использовать любой из них, чтобы решить эту проблему.
- scan.AssembliesFromApplicationBaseDirectory ();
Для использования();
public DefaultRegistry () {Scan (scan => {scan.TheCallingAssembly (); //scan.AssembliesFromApplicationBaseDirectory (); scan.WithDefaultConventions (); scan.With (new ControllerConvention ());}); Для использования(); }