2010-12-14 6 views
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); 
     } 
    } 
    } 

ですが、全体的にパフォーマンスが低下するかどうかはわかりません。誰もがこのアプローチで自分の経験を共有できますか?

答えて

関連する問題