0

Je viens d'ajouter le StructureMap de NuGet et modifié le fichier DefaultRegistry comme celui-ciStructure question de l'injection de dépendance de la carte: Aucune instance par défaut est enregistré et ne peut pas être déterminé automatiquement

public class DefaultRegistry: Registre { Constructors #region et Destructeurs

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

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

     #endregion 
    } 
} 

code contrôleur est

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 que je suis gettin g StructureMap.StructureMapConfigurationException: « Aucune instance par défaut est enregistré et ne peut pas être déterminé automatiquement pour le 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) 

Répondre

0

mon interface et la classe est dans un autre projet; Il y a donc deux façons de résoudre ce problème. Nous pouvons utiliser l'un ou l'autre pour résoudre ce problème.

  1. scan.AssembliesFromApplicationBaseDirectory();
  2. Pour(). Utilisation();

    DefaultRegistry public() { balayage (scan => { scan.TheCallingAssembly(); //scan.AssembliesFromApplicationBaseDirectory(); scan.WithDefaultConventions(); scan.With (nouveau ControllerConvention()) ; }); Pour(). Utilisation(); }