Проблема внедрения зависимости структурной карты: экземпляр по умолчанию не зарегистрирован и не может быть определен автоматически

Я просто добавил 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 ответ

Мой интерфейс и класс находится в другом проекте; так что есть два способа решить эту проблему. Мы можем использовать любой из них, чтобы решить эту проблему.

  1. scan.AssembliesFromApplicationBaseDirectory ();
  2. Для использования();

    public DefaultRegistry () {Scan (scan => {scan.TheCallingAssembly (); //scan.AssembliesFromApplicationBaseDirectory (); scan.WithDefaultConventions (); scan.With (new ControllerConvention ());}); Для использования(); }