J'ai décidé d'utiliser StructureMap
pour mon application. Voici ce que je l'ai fait pour le faire fonctionner:
Créer ma propre classe CustomFactory:
public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)
{
if (controllerType == null)
{
return base.GetControllerInstance(controllerType);
}
try
{
return ObjectFactory.GetInstance(controllerType) as Controller;
}
catch (StructureMapException ex)
{
throw;
}
}
}
Créer une Bootstrapper, en utilisant la convention de StructureMap pour enregistrer toutes les interfaces et sa mise en œuvre pour mon montage. (Je l'ai posté un blog post à ce sujet):
public class StructureMapBootstrapper : IBootstrapper
{
private static bool hasStarted;
public void BootstrapStructureMap()
{
ObjectFactory.Initialize(x =>
{
x.AddRegistry<FactoryRegistry>();
});
}
public static void Restart()
{
if (hasStarted)
{
ObjectFactory.ResetDefaults();
}
else
{
Bootstrap();
hasStarted = true;
}
}
public static void Bootstrap()
{
new StructureMapBootstrapper().BootstrapStructureMap();
}
}
public class FactoryRegistry : Registry
{
public FactoryRegistry()
{
Scan(s =>
{
s.Assembly("Calendar.Library");
s.TheCallingAssembly();
s.AddAllTypesOf<IController>().NameBy(type => type.Name.Replace("Controller", "").ToLower());
s.WithDefaultConventions();
});
}
}
Inscrivez-StructureMap à Global.asax.cs:
protected void Application_Start()
{
StructureMapBootstrapper.Bootstrap();
ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());
}
Je regardais ce droit page avant posté ma question ici et espérais que Quelqu'un me dirigerait vers la bonne version. Dommage que ce ne soit pas supporté. Qu'en est-il de StructureMap, prend-il en charge ASP.NET MVC 1? Merci. – Saxman
Ne sait pas - jamais utilisé ... –