public DataBinder(System.Action <T> validateCallback, System.Action <T> bindCallback, System.Action <T> unbindCallback)
 {
     self           = this;
     OnValidateData = validateCallback;
     OnBindData     = bindCallback;
     OnUnbindData   = unbindCallback;
 }
        /// <summary>
        /// Subscribe binder to events receiving.
        /// </summary>
        /// <param name="binder">Binder instance.</param>
        public void Subscribe(IDataBinder binder)
        {
            if (binder == null)
            {
                throw new ArgumentException("binder");
            }
            if (string.IsNullOrEmpty(binder.BindedSource))
            {
                throw new ArgumentException("binder.Source");
            }
            if (string.IsNullOrEmpty(binder.BindedProperty))
            {
                throw new ArgumentException("binder.Property");
            }

            var holder = GetSource(binder.BindedSource, true);
            BindedPropertyInfo propInfo;

            if (!holder.Properties.TryGetValue(binder.BindedProperty, out propInfo))
            {
                propInfo = new BindedPropertyInfo();
                holder.Properties[binder.BindedProperty] = propInfo;
            }
            if (!propInfo.Listeners.Contains(binder))
            {
                propInfo.Listeners.Add(binder);
            }
        }
예제 #3
0
 private void EnsureBinderExists()
 {
     if (binder == null)
     {
         binder = CreateBinder();
     }
 }
예제 #4
0
 static void Bench(IDataBinder <Record> binder, DbDataReader reader)
 {
     while (reader.Read())
     {
         var item = new Record();
         binder.Bind(reader, item);
     }
 }
예제 #5
0
        /// <summary>
        /// Sets the binder for a slot.
        /// </summary>
        /// <param name="slot">The slot.</param>
        /// <param name="binder">The binder.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="slot"/>
        /// or <paramref name="binder"/> is null.</exception>
        public void SetSlotBinder(ISlotInfo slot, IDataBinder binder)
        {
            if (slot == null)
                throw new ArgumentNullException("slot");
            if (binder == null)
                throw new ArgumentNullException("binder");

            slotBinders[slot] = binder;
        }
 public void Dispose()
 {
     Data           = null;
     mRefresh       = false;
     OnValidateData = null;
     OnBindData     = null;
     OnUnbindData   = null;
     self           = null;
 }
예제 #7
0
		public void Init()
		{
			binder = new DataBinder();
			builder = new TreeBuilder();
			
			CultureInfo en = CultureInfo.CreateSpecificCulture("en");

			Thread.CurrentThread.CurrentCulture	= en;
			Thread.CurrentThread.CurrentUICulture = en;
		}
예제 #8
0
        public void Init()
        {
            binder  = new DataBinder();
            builder = new TreeBuilder();

            CultureInfo en = CultureInfo.CreateSpecificCulture("en");

            Thread.CurrentThread.CurrentCulture   = en;
            Thread.CurrentThread.CurrentUICulture = en;
        }
예제 #9
0
        public void Init()
        {
            binder           = new DataBinder();
            builder          = new TreeBuilder();
            binder.Validator = new ValidatorRunner(new CachedValidationRegistry());

            CultureInfo en = CultureInfo.CreateSpecificCulture("en");

            Thread.CurrentThread.CurrentCulture   = en;
            Thread.CurrentThread.CurrentUICulture = en;
        }
		public void Init()
		{
			binder = new DataBinder();
			builder = new TreeBuilder();
			binder.Validator = new ValidatorRunner(new CachedValidationRegistry());

			CultureInfo en = CultureInfo.CreateSpecificCulture("en");

			Thread.CurrentThread.CurrentCulture = en;
			Thread.CurrentThread.CurrentUICulture = en;
		}
예제 #11
0
        /// <summary>
        /// Sets the binder for a slot.
        /// </summary>
        /// <param name="slot">The slot.</param>
        /// <param name="binder">The binder.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="slot"/>
        /// or <paramref name="binder"/> is null.</exception>
        public void SetSlotBinder(ISlotInfo slot, IDataBinder binder)
        {
            if (slot == null)
            {
                throw new ArgumentNullException("slot");
            }
            if (binder == null)
            {
                throw new ArgumentNullException("binder");
            }

            slotBinders[slot] = binder;
        }
예제 #12
0
        /// <summary>
        /// Binds the model object using a castle IDataBinder
        /// </summary>
        /// <param name="controllerContext"></param>
        /// <param name="bindingContext">The current binding context</param>
        /// <returns>A ModelBinderResult containing the bound object</returns>
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            IDataBinder binder    = LocateBinder(controllerContext);
            string      modelName = Prefix ?? bindingContext.ModelName;
            var         tree      = new TreeBuilder().BuildSourceNode(GetStore(controllerContext));

            if (tree.GetChildNode(modelName) == null)
            {
                return(null);
            }

            object instance = binder.BindObject(bindingContext.ModelType, modelName, Exclude, null, tree);

            return(instance);
        }
 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 {
     if (context != null && context.Instance != null && provider != null)
     {
         IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
         if (edSvc != null)
         {
             IDataBinder dg = context.Instance as IDataBinder;
             if (dg != null)
             {
                 //field list editing
                 dlgPropFields dlg1 = dg.GetFieldsDialog();
                 if (dlg1 != null)
                 {
                     if (edSvc.ShowDialog(dlg1) == System.Windows.Forms.DialogResult.OK)
                     {
                         dg.SetFieldsAfterFieldsDialog(dlg1.fields);
                     }
                 }
             }
             else
             {
                 EasyQuery qry = context.Instance as EasyQuery;
                 if (qry != null)
                 {
                     //field list editing
                     dlgPropFields dlg1 = qry.GetFieldsDialog();
                     if (dlg1 != null)
                     {
                         if (edSvc.ShowDialog(dlg1) == System.Windows.Forms.DialogResult.OK)
                         {
                             value = dlg1.fields;
                         }
                     }
                 }
             }
         }
     }
     return(value);
 }
예제 #14
0
        public void TypeConverterBinding()
        {
            var args = new NameValueCollection();

            args.Add("Comp.Type1", "validvalue");

            var instance = (Comp)binder.BindObject(typeof(Comp), "Comp", builder.BuildSourceNode(args));

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Type1);
            Assert.IsNull(instance.Type2);

            args = new NameValueCollection();

            args.Add("Comp.Nonsense", "validvalue");

            binder   = new DataBinder();
            instance = (Comp)binder.BindObject(typeof(Comp), "Comp", builder.BuildSourceNode(args));

            Assert.IsNotNull(instance);
            Assert.IsNull(instance.Type1);
            Assert.IsNull(instance.Type2);
        }
        /// <summary>
        /// Unsubscribe binder from events receiving.
        /// </summary>
        /// <param name="binder">Binder instance.</param>
        public void Unsubscribe(IDataBinder binder)
        {
            if (binder == null ||
                string.IsNullOrEmpty(binder.BindedSource) ||
                string.IsNullOrEmpty(binder.BindedProperty))
            {
                return;
            }
            var holder = GetSource(binder.BindedSource);

            if (holder != null)
            {
                BindedPropertyInfo propInfo;
                if (holder.Properties.TryGetValue(binder.BindedProperty, out propInfo))
                {
                    var idx = propInfo.Listeners.IndexOf(binder);
                    if (idx != -1)
                    {
                        propInfo.Listeners.RemoveAt(idx);
                    }
                }
            }
        }
예제 #16
0
 /// <summary>
 /// Binds the instance errors.
 /// </summary>
 /// <param name="validatorExposer">The validator exposer.</param>
 /// <param name="binder">The binder.</param>
 /// <param name="instance">The instance.</param>
 protected virtual void BindInstanceErrors(IValidatorAccessor validatorExposer, IDataBinder binder, object instance)
 {
     if (instance != null)
     {
         validatorExposer.BoundInstanceErrors[instance] = binder.ErrorList;
     }
 }
예제 #17
0
        /// <summary>
        /// Configures the validator.
        /// </summary>
        /// <param name="validatorExposer">The validator exposer.</param>
        /// <param name="binder">The binder.</param>
        protected virtual void ConfigureValidator(IValidatorAccessor validatorExposer, IDataBinder binder)
        {
            if (validate && validatorExposer == null)
            {
                throw new MonoRailException("DataBind wants to validate, but controller does not seem to implement IValidatorAccessor interface");
            }

            if (validate)
            {
                binder.Validator = validatorExposer.Validator;
            }
            else
            {
                binder.Validator = null;
            }
        }
예제 #18
0
파일: Flow.cs 프로젝트: allisterb/Adrien
 public void Evaluate(IDataBinder reader, IDataBinder writer)
 {
     throw new NotImplementedException();
 }
		public IlExpressionEmitNodeVisitor(IDataBinder dataBinder, IHelperBinder helperBinder)
		{
			_dataBinder = dataBinder;
		}
예제 #20
0
		/// <summary>
		/// Initializes a new instance of the <see cref="WizardStepPage"/> class.
		/// </summary>
		/// <param name="binder">The binder.</param>
		public WizardStepPage(IDataBinder binder) : base(binder)
		{
		}
 public void Init()
 {
     binder = new DataBinder();
 }
예제 #22
0
		/// <summary>
		/// Binds the instance errors.
		/// </summary>
		/// <param name="validatorExposer">The validator exposer.</param>
		/// <param name="binder">The binder.</param>
		/// <param name="instance">The instance.</param>
		protected virtual void BindInstanceErrors(IValidatorAccessor validatorExposer, IDataBinder binder, object instance)
		{
			if (instance != null)
			{
				validatorExposer.BoundInstanceErrors[instance] = binder.ErrorList;
			}
		}
예제 #23
0
 /// <remarks>
 /// The optimization relies on two graph-to-graph transformations.
 /// First, the automatic differentiation which provides parameter
 /// updates to be obtained from every single input. Second, the
 /// minibatching which provides a more granular and more efficient
 /// way to compute the parameter updates.
 /// </remarks>
 public Flow Optimize(Graph graph, IDataBinder dataSource)
 {
     throw new NotImplementedException();
 }
예제 #24
0
 /// <summary>
 /// Populates the validator error summary.
 /// </summary>
 /// <param name="validatorExposer">The validator exposer.</param>
 /// <param name="binder">The binder.</param>
 /// <param name="instance">The instance.</param>
 protected virtual void PopulateValidatorErrorSummary(IValidatorAccessor validatorExposer, IDataBinder binder, object instance)
 {
     if (validate)
     {
         validatorExposer.PopulateValidatorErrorSummary(instance, binder.GetValidationSummary(instance));
     }
 }
예제 #25
0
		/// <summary>
		/// Populates the validator error summary.
		/// </summary>
		/// <param name="controller">The controller.</param>
		/// <param name="binder">The binder.</param>
		/// <param name="instance">The instance.</param>
		protected void PopulateValidatorErrorSummary(SmartDispatcherController controller, IDataBinder binder, object instance)
		{
			if (validate)
			{
				controller.PopulateValidatorErrorSummary(instance, binder);
			}
		}
예제 #26
0
 public void Add(IDataBinder db)
 {
     binderList.Add(db);
 }
		public void Init()
		{
			binder = new DataBinder();
		}
예제 #28
0
 public BaseController(IDataBinder binder) : base(binder)
 {
 }
예제 #29
0
		/// <summary>
		/// Binds the instance errors.
		/// </summary>
		/// <param name="controller">The controller.</param>
		/// <param name="binder">The binder.</param>
		/// <param name="instance">The instance.</param>
		protected void BindInstanceErrors(SmartDispatcherController controller, IDataBinder binder, object instance)
		{
			if (instance != null)
			{
				controller.BoundInstanceErrors[instance] = binder.ErrorList;
			}
		}
예제 #30
0
		private void EnsureBinderExists()
		{
			if (binder == null)
			{
				binder = CreateBinder();
			}
		}
예제 #31
0
		/// <summary>
		/// Configures the validator.
		/// </summary>
		/// <param name="validatorExposer">The validator exposer.</param>
		/// <param name="binder">The binder.</param>
		protected virtual void ConfigureValidator(IValidatorAccessor validatorExposer, IDataBinder binder)
		{
			if (validate && validatorExposer == null)
			{
				throw new MonoRailException("DataBind wants to validate, but controller does not seem to implement IValidatorAccessor interface");
			}

			if (validate)
			{
				binder.Validator = validatorExposer.Validator;
			}
			else
			{
				binder.Validator = null;
			}
		}
예제 #32
0
		/// <summary>
		/// Configures the validator.
		/// </summary>
		/// <param name="controller">The controller.</param>
		/// <param name="binder">The binder.</param>
		protected void ConfigureValidator(SmartDispatcherController controller, IDataBinder binder)
		{
			if (validate)
			{
				binder.Validator = controller.Validator;
			}
			else
			{
				binder.Validator = null;
			}
		}
예제 #33
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WizardStepPage"/> class.
 /// </summary>
 /// <param name="binder">The binder.</param>
 public WizardStepPage(IDataBinder binder) : base(binder)
 {
 }
예제 #34
0
		public void TypeConverterBinding()
		{
			var args = new NameValueCollection();

			args.Add("Comp.Type1", "validvalue");

			var instance = (Comp) binder.BindObject(typeof (Comp), "Comp", builder.BuildSourceNode(args));

			Assert.IsNotNull(instance);
			Assert.IsNotNull(instance.Type1);
			Assert.IsNull(instance.Type2);

			args = new NameValueCollection();

			args.Add("Comp.Nonsense", "validvalue");

			binder = new DataBinder();
			instance = (Comp) binder.BindObject(typeof (Comp), "Comp", builder.BuildSourceNode(args));

			Assert.IsNotNull(instance);
			Assert.IsNull(instance.Type1);
			Assert.IsNull(instance.Type2);
		}
예제 #35
0
		/// <summary>
		/// Populates the validator error summary.
		/// </summary>
		/// <param name="validatorExposer">The validator exposer.</param>
		/// <param name="binder">The binder.</param>
		/// <param name="instance">The instance.</param>
		protected virtual void PopulateValidatorErrorSummary(IValidatorAccessor validatorExposer, IDataBinder binder, object instance)
		{
			if (validate)
			{
				validatorExposer.PopulateValidatorErrorSummary(instance, binder.GetValidationSummary(instance));
			}
		}
 /// <summary>
 /// Initializes a new instance of the <see cref="SmartDispatcherController"/> class.
 /// </summary>
 /// <param name="binder">The binder.</param>
 protected SmartDispatcherController(IDataBinder binder)
 {
     this.binder = binder;
 }
예제 #37
0
 public EmitNodeVisitor(IDataBinder dataBinder, IHelperBinder helperBinder) : this(new EmitExpressionVisitor(dataBinder, helperBinder))
 {
 }
 public DataBinder()
 {
     self = this;
 }