public ShapeAlterationBuilder BoundAs(string bindingSource, Func <ShapeDescriptor, Func <DisplayContext, Task <IHtmlContent> > > binder) { // schedule the configuration return(Configure(descriptor => { Func <DisplayContext, Task <IHtmlContent> > target = null; var binding = new ShapeBinding { ShapeDescriptor = descriptor, BindingName = _bindingName, BindingSource = bindingSource, }; binding.BindingAsync = displayContext => { // when used, first realize the actual target once if (target == null) { target = binder(binding.ShapeDescriptor); } // and execute the re return target(displayContext); }; // ShapeDescriptor.Bindings is a case insensitive dictionary descriptor.Bindings[_bindingName] = binding; descriptor.BindingSources.Add(bindingSource); })); }
public ShapeAlterationBuilder BoundAs(string bindingSource, Func <DisplayContext, Task <IHtmlContent> > bindingDelegate) { // schedule the configuration return(Configure(descriptor => { var binding = new ShapeBinding { BindingName = _bindingName, BindingSource = bindingSource, }; binding.BindingAsync = bindingDelegate; // ShapeDescriptor.Bindings is a case insensitive dictionary descriptor.Bindings[_bindingName] = binding; descriptor.BindingSources.Add(bindingSource); })); }