public virtual DataModelBindingBuilder <TSourceModel, TSourceField, TTargetModel, TTargetField> Bind(ModelFieldBindingTarget <TTargetField> bindingTarget, ModelFieldBindingSource <TSourceField> bindingSource, DataModelBinding <TSourceField, TTargetField> binding) { var sourcePathBase = bindingSource.Path; var targetPathBase = bindingTarget.Path; foreach (var inputFieldBinding in binding.FieldBindings) { var target = new ModelFieldBindingTarget <TTargetField>( targetPathBase.Concat(inputFieldBinding.BindingTarget.Path).ToArray(), inputFieldBinding.TargetField ); if (IsBound(target)) { continue; } var source = new ModelFieldBindingSource <TSourceField>( sourcePathBase.Concat(inputFieldBinding.BindingSource.Path).ToArray(), inputFieldBinding.SourceField ); var fieldBinding = new ModelFieldBinding <TSourceField, TTargetField>( source, target, inputFieldBinding.Transformation ); FieldBindings.Add(fieldBinding); } return(this); }
public virtual bool IsBound(ModelFieldBindingSource <TSourceField> bindingSource) { return(FieldBindings.Any(q => q.BindingSource.Path.SequenceEqual(bindingSource.Path))); }
public virtual DataModelBindingBuilder <TSourceModel, TSourceField, TTargetModel, TTargetField> Bind(ModelFieldBindingTarget <TTargetField> bindingTarget, ModelFieldBindingSource <TSourceField> bindingSource, IBindingTransformFactory bindingTransformFactory) { if (bindingSource == null) { throw new ArgumentNullException(nameof(bindingSource)); } if (bindingTarget == null) { throw new ArgumentNullException(nameof(bindingTarget)); } var bindingTransformation = bindingTransformFactory.CreateTransformation( bindingSource.Field, bindingTarget.Field ); var fieldBinding = new ModelFieldBinding <TSourceField, TTargetField>( bindingSource, bindingTarget, bindingTransformation ); FieldBindings.Add(fieldBinding); return(this); }
public BindingPair(ModelFieldBindingSource <TSourceField> source, ModelFieldBindingTarget <TTargetField> target) { Source = source ?? throw new ArgumentNullException(nameof(source)); Target = target ?? throw new ArgumentNullException(nameof(target)); }