2009-11-22 9 views
0

Je suis en train de commencer avec IoC, j'ai un projet MVC dans lequel j'utilise subsonic, j'essaie d'injecter subpositic simplerepository à mes contrôleurs mais je reçois cette erreur: StructureMap code d'exception: 205 manquant propriété demandé instance "connectionStringName" pour InstanceKey "60b735fb-0a7f-4eb4-be04-635f6f32233d"Injection de la classe Subsonic SimpleRepository au contrôleur

Voici ma classe de registre:

public class RepositoryRegistry : Registry 
{ 
    protected override void configure() 
    { 
     ForRequestedType<IRepository>().TheDefault.Is.OfConcreteType(typeof(SimpleRepository)); 

    } 
} 

Et voici mon usine de contrôleur:

public class StoreControllerFactory: DefaultControllerFactory 
{ 
    protected override IController GetControllerInstance(Type controllerType) 
    { 
     IController result = null; 
     if (controllerType!=null) 
     { 
      result = ObjectFactory.GetInstance(controllerType) as Controller; 

     } 
     return result; 
    } 
} 

Et voici comment configurer StructureMap:

 protected void Application_Start() 
    { 
     RegisterRoutes(RouteTable.Routes); 

     ObjectFactory.Initialize(x=> 
            { 
             x.AddRegistry(new RepositoryRegistry()); 
            }); 
     ControllerBuilder.Current.SetControllerFactory(new StoreControllerFactory()); 


     var sparkSettings = new SparkSettings().SetDebug(true).AddNamespace("System.Web.Mvc.Html"); 
     ViewEngines.Engines.Clear(); 
     ViewEngines.Engines.Add(new SparkViewFactory(sparkSettings)); 
    } 

Toute aide serait appréciée! Merci!

+0

Pouvez-vous ajouter du code pour votre SimpleRepository? Je pense qu'il y a un problème avec cette classe (exactement avec son paramètre constructeur nommé connectionStringName). –

Répondre

0

Le problème est que StructureMap utilisait le constructeur avec le plus de paramètres, je fixe avec ceci:

ObjectFactory.Configure(
      x => { x.SelectConstructor<SimpleRepository>(() => new SimpleRepository()); }); 
Questions connexes