0
votes

I just added the structureMap from nuget and modified the DefaultRegistry file like this

public class DefaultRegistry : Registry { #region Constructors and Destructors

        public DefaultRegistry() {
            Scan(
                scan => {
                    // scan.TheCallingAssembly();
                    scan.AssembliesFromApplicationBaseDirectory(
                     filter => filter.FullName.StartsWith("TaskManagement"));

                    scan.WithDefaultConventions();
                    scan.With(new ControllerConvention());
                });
            //For<IExample>().Use<Example>();
        }

        #endregion
    }
}

Controller code is

 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);
                }
            }
        }

Exception which I am getting StructureMap.StructureMapConfigurationException: 'No default Instance is registered and cannot be automatically determined for type '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 Answers

0
votes

my interface and the class is in other project ; so there are two ways to resolve this issue. We can use either of these to resolve this.

  1. scan.AssembliesFromApplicationBaseDirectory();
  2. For().Use();

    public DefaultRegistry() { Scan( scan => { scan.TheCallingAssembly(); //scan.AssembliesFromApplicationBaseDirectory(); scan.WithDefaultConventions(); scan.With(new ControllerConvention()); }); For().Use(); }