我可以使用DefaultBinder进行依赖注入吗?

时间:2010-12-14 15:58:56

标签: asp.net-mvc castle-windsor

我正在尝试为我们的自定义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);
        }
    }
    }   

但我不确定这是否会导致整体性能不佳。任何人都可以分享他自己的经验吗?

1 个答案:

答案 0 :(得分:2)

MvcContrib已经有了这个。请参阅source codetests