/// <summary> /// Add a general binder. /// </summary> /// <param name="binder"></param> /// <returns></returns> public FluentBinder Bind(IBindingProvider binder) { if (this._hook != null) { var fluidBinder = (FluentBindingProvider <TAttribute>)binder; fluidBinder.BuildParameterDescriptor = _hook; _hook = null; } // Apply filters if (this._filterDescription.Count > 0) { binder = new FilteringBindingProvider <TAttribute>( _configuration, this._nameResolver, binder, FilterNode.And(this._filterDescription)); this._filterDescription.Clear(); } var opts = new FluentBinder(_configuration, _nameResolver, binder); _binders.Add(opts); return(opts); }
/// <summary> /// Add a general binder. /// </summary> /// <param name="binder"></param> /// <returns></returns> public void Bind(IBindingProvider binder) { if (this._hook != null) { var fluidBinder = (FluentBindingProvider <TAttribute>)binder; fluidBinder.BuildParameterDescriptor = _hook; _hook = null; } // Apply filters if (this._filters.Count > 0) { var filters = this._filters.ToArray(); // produce copy Func <TAttribute, Type, bool> predicate = (attribute, type) => { foreach (var filter in filters) { if (!filter(attribute)) { return(false); } } return(true); }; binder = new FilteringBindingProvider <TAttribute>( predicate, this._parent.NameResolver, binder, this._filterDescription.ToString()); this._filterDescription.Clear(); this._filters.Clear(); } _binders.Add(binder); }