1
J'essaye d'implémenter l'injection de dépendance pour nos ModelBinders personnalisés. En ce moment j'aiPuis-je utiliser un DefaultBinder pour faire une injection de dépendance?
protected void Application_Start()
{
// removed IoC configuration code
ModelBinders.Binders.DefaultBinder = new CastleWindsorModelBinder(this.container, ModelBinders.Binders.DefaultBinder);
// removed configuration code
}
public class CastleWindsorModelBinder : IModelBinder
{
private readonly IWindsorContainer container;
private readonly IModelBinder fallback;
public CastleWindsorModelBinder(IWindsorContainer container, IModelBinder fallback)
{
this.container = container;
this.fallback = fallback;
}
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
try
{
var binder = (IModelBinder)this.container.Resolve(
bindingContext.ModelType.FullName, typeof (IModelBinder));
return binder.BindModel(controllerContext, bindingContext);
}
catch (ComponentNotFoundException)
{
return fallback.BindModel(controllerContext, bindingContext);
}
}
}
mais je ne suis pas sûr si cela entraînera une mauvaise performance globale. Quelqu'un peut-il partager sa propre expérience avec cette approche?