2010-05-20 10 views
2

Je crée une application en utilisant ASP.NET MVC (2) et Spring.NET.Contrôleurs génériques ASP.NET MVC et Spring.NET

Comme la plupart de mes implémentations de contrôleur mettre en œuvre que les opérations CRUD semblables, je voudrais simplement créer un seul contrôleur générique, comme expliqué ici:

In asp.net mvc is it possible to make a generic controller?

Cependant, l'exemple ci-dessus ne prend pas Cadres de DI en considération.

Ce que je pense est de créer ce (avertissement: ceci est une masse laide de code que je besoin d'aide):

public SpringGenericControllerFactory : DefaultControllerFactory { 

    public IController CreateController(RequestContext requestContext, string controllerName) { 

     // Determine the controller type to return 
     Type controllerType = Type.GetType("MyController").MakeGenericType(Type.GetType(controllerName)); 

     // Return the controller 
     return Activator.CreateInstance(controllerType) as IController; 

    } 
} 

Les entrées de objects.xml ressemblerait à quelque chose comme ceci:

<object id="controllerFactory" type="Application.Controllers.SpringGenericControllerFactory" />

<object id="DepartmentController" factory-method="CreateController" factory-object="controllerFactory" />

quelqu'un peut-il choisir à travers cela et vous donner des conseils?

Répondre

0

Deux choses:

  • L'argument ControllerName va effectivement venir par le biais de 'Département' et non 'DepartmentController'. Vous devez gérer ceci ou ajuster le nom dans vos objets.xml

  • Assurez-vous de revenir à l'implémentation par défaut si le contexte ne renvoie pas un contrôleur. Dans ce cas, vous devriez revenir à l'implémentation des classes de base.