Ejemplo n.º 1
0
        // Calls the PropertySet call back.
        // If cancelled then return false, otherwise return true.
        // <param name="evt">
        // <returns></returns>

        internal bool CallPropertySet(PropertyDelegateEventArgs evt)
        {
            if (PropertySet != null)
            {
                PropertySet(this, evt);
                if (evt.CancelEvent == true)
                {
                    IsDirty = true;
                    return(false);
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
        public object this [string key]
        {
            get
            {
                lock ( lockProps )
                {
                    PopulateProperties();
                    if (!knownProps.ContainsKey(key.ToUpper()))
                    {
                        return(null);
                    }
                    return(knownProps[
                               key.ToUpper()
                           ].GetValue(
                               this,
                               null
                               ));
                }
            }
            set
            {
                lock ( lockProps )
                {
                    PopulateProperties();
                    if (!knownProps.ContainsKey(key.ToUpper()))
                    {
                        return;
                    }

                    if (PropertySet != null)
                    {
                        PropertyDelegateEventArgs arg = new PropertyDelegateEventArgs {
                            Property    = key.ToUpper(),
                            OldValue    = this[key.ToUpper()],
                            NewValue    = value,
                            CancelEvent = false
                        };
                        PropertySet(this, arg);
                        if (arg.CancelEvent == true)
                        {
                            IsDirty = true;
                            return;
                        }
                    }

                    if (
                        knownProps[key.ToUpper()].PropertyType.IsArray ||
                        knownProps[key.ToUpper()].PropertyType.IsGenericType
                        )
                    {
                        int nb = Math.Min(
                            (
                                (dynamic)(
                                    knownProps[
                                        key.ToUpper()
                                    ].GetValue(this, null)
                                    )
                            ).Length,
                            (
                                (Array)value
                            ).Length
                            );
                        for (int i = 0; i < nb; i++)
                        {
                            SetArrayValue(
                                key,
                                i,
                                (
                                    (dynamic)value
                                )[i]
                                );
                        }

                        /*for (int i = 0; i < nb; i++)
                         * knownProps[key.ToUpper()].SetValue(this, value, new object[] { i });*/
                    }
                    else
                    {
                        knownProps[
                            key.ToUpper()
                        ].SetValue(this, value, null);
                    }
                }
            }
        }