2009-12-22 3 views
1

Je reçois une erreur:StructureMap Erreur 202 Mise en place conteneur du CIO

StructureMap Code d'exception: 202 Aucune instance par défaut défini pour PluginFamily MVCPoco.Services.IService, MVCPoco.Services, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null

Line 96:   { 
Line 97:    Type controllerType = base.GetControllerType(context, controllerName); 
Line 98:    return ObjectFactory.GetInstance(controllerType) as IController; 
Line 99:   } 
Line 100: } 

l'erreur se produit dans la ligne 98

Toutes les idées? J'utilise asp.net mvc 2 preview 2 fourni avec visual studio 2010.

+0

private static void InitializeStructureMap (IInitializationExpression x) { x.Scan (y => { y .assembly ("MVCPoco.Core"); y.Assembly ("MVCPoco.Data"); y.With (); }); J'utilise ce code pour utiliser la convention de nom par défaut ... Peut-être que je fais quelque chose de mal. – Diego

+0

J'utilise SM 2.5.2 ces méthodes noes n'existe pas dans mon contexte actuel x.Pour () .Utiliser (); y.With (nouveau SingleImplementationScanner()); – Diego

Répondre

0

Vous devez enregistrer les types à injecter au démarrage de l'application dans la fonction ObjectFactory.Configure. Consultez les documents sur le site de Structure Map pour configurer votre conteneur IOC.

Andrew

1

Le contrôleur que vous essayez d'instancier a une dépendance constructeur sur IService. Vous devez vous assurer que vous enregistrez une implémentation concrète de IService lorsque vous configurez StructureMap. DefaultConventionScanner enregistre uniquement les implémentations portant le même nom que leur interface (sans le premier I). Donc, à moins que votre implémentation de IService soit nommée Service, elle ne sera pas enregistrée automatiquement. Pour l'enregistrer explicitement, ajouter quelque chose comme ceci à votre script inititalization:

x.For<IService>().Use<MyService>(); 

Sinon, si vous exécutez StructureMap du dernier code source, vous pouvez utiliser la SingleImplementationScanner dans l'expression de balayage():

y.With(new SingleImplementationScanner()); 

et cela enregistrera automatiquement les types concrets s'ils sont la seule implémentation d'une interface dans le code analysé, quel que soit le nom.

0

Eh bien, je l'ai mis en place correctement le StructureMap que je viens de passage à la méthode

public static void Configure() 
     { 
      ObjectFactory.Initialize(x => 

      x.AddRegistry(new IOCRegistry())); // in here i have registered my dependencies with for method. 

     } 
Questions connexes