1
我想为我们的自定义ModelBinders实现依赖注入。现在我有我可以使用DefaultBinder执行依赖注入吗?
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);
}
}
}
但我不确定这是否会导致整体表现不佳。任何人都可以用这种方法分享他自己的经验吗?