Я пытаюсь реализовать внедрение зависимостей для наших пользовательских ModelBinder. Прямо сейчас у меня есть
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);
}
}
}
но я не уверен, приведет ли это к снижению производительности в целом. Кто-нибудь может поделиться своим опытом с этим подходом?