Example #1
0
        private void SetPropertyValue <T>(T instance, CachedProperty property, IConfigurationSection section)
            where T : class
        {
            if (IsIgnored(property))
            {
                return;
            }
            var propertyConfiguration = GetPropertyConfiguration(property);
            var unparsedValue         = section[property.Name];
            var value = GetParsedValue <T>(property, unparsedValue, propertyConfiguration);

            property.SetValue(instance, value);
        }
Example #2
0
        /// <summary>
        /// Assigns Value in given direction between Control and DataSource Target
        /// </summary>
        /// <param name="aDirection">
        /// Direction of data <see cref="EDataDirection"/>
        /// </param>
        /// <param name="aObject">
        /// Object which contains data <see cref="System.Object"/>
        /// </param>
        /// <param name="aControl">
        /// Control used to edit <see cref="System.Object"/>
        /// </param>
        /// <returns>
        /// Returns true if successful <see cref="System.Boolean"/>
        /// </returns>
        public bool AssignValueToObject(EDataDirection aDirection, object aObject, object aControl)
        {
            bool res = false;

            // Check if
            if (IsGlobal == true)
            {
                if (aDirection == EDataDirection.FromControlToDataSource)
                {
                    throw new ExceptionGlobalMappingAssignedFromControlToTarget();
                }

#if NEWCACHE
                if (dataCache == null)
                {
                    dataCache = new CachedProperty(Adaptor.FinalTarget, Name);
                }
                if (controlCache == null)
                {
                    controlCache = new CachedProperty(aControl, MappingTarget);
                }
                if (controlCache.IsCached == true)
                {
                    object val;
                    if (dataCache.IsCached == true)
                    {
                        if (dataCache.GetValue(out val) == true)
                        {
                            if (controlCache.SetValue(val) == true)
                            {
                                val = null;
                                return(true);
                            }
                        }
                    }
                }
                return(false);
#endif
#if OLDCACHE
                object FromObject   = aObject;
                object ToObject     = aControl;
                string FromProperty = Name;
                string ToProperty   = MappingTarget;

                // assign, direction is already correct
                res        = ConnectionProvider.CopyPropertyValue(FromObject, FromProperty, ToObject, ToProperty);
                FromObject = null;
                ToObject   = null;
                return(res);
#endif
            }
            else
            {
#if NEWCACHE
                CachedProperty FromObject;
                CachedProperty ToObject;
                bool           canbedone;
                if (aDirection == EDataDirection.FromControlToDataSource)
                {
                    FromObject = controlCache;
                    ToObject   = dataCache;
                    canbedone  = AllowedToWrite;
                    if (ToObject is IObserveable)
                    {
                        (ToObject as IObserveable).ResetChangeCallCheckup();
                    }
                }
                else
                {
                    FromObject = dataCache;
                    ToObject   = controlCache;
                    canbedone  = AllowedToRead;
                }

                if (controlCache == null)
                {
                    controlCache = new CachedProperty(aControl, MappingTarget);
                }

                object val = null;
                // assign in set direction
                if ((canbedone == true) && (FromObject != null) && (ToObject != null))
                {
                    if (FromObject.GetValue(out val) == true)
                    {
                        if (ToObject.SetValue(val) == true)
                        {
                            if (aDirection == EDataDirection.FromControlToDataSource)
                            {
                                if ((ToObject is IObserveable) == false)
                                {
                                    DataSourceController.CallChangedFor(ToObject);
                                }
                                else
                                if ((ToObject as IObserveable).HasCalledForChange == false)
                                {
                                    (ToObject as IObserveable).HasChanged = true;
                                }
                            }
                        }
                        res = true;
                    }
                }
                FromObject = null;
                ToObject   = null;
                return(res);
#endif
#if OLDCACHE
                object FromObject;
                object ToObject;
                string FromProperty;
                string ToProperty;
                bool   canbedone;
                // swap direction if needed
                if (aDirection == EDataDirection.FromControlToDataSource)
                {
                    FromObject   = aControl;
                    ToObject     = aObject;
                    FromProperty = MappingTarget;
                    ToProperty   = Name;
                    canbedone    = AllowedToWrite;
                    if (ToObject is IObserveable)
                    {
                        (ToObject as IObserveable).ResetChangeCallCheckup();
                    }
                }
                else
                {
                    FromObject   = aObject;
                    ToObject     = aControl;
                    FromProperty = Name;
                    ToProperty   = MappingTarget;
                    canbedone    = AllowedToRead;
                }

                // assign in set direction
                if (canbedone == true)
                {
                    if (ConnectionProvider.CopyPropertyValue(FromObject, FromProperty, ToObject, ToProperty) == true)
                    {
                        if (aDirection == EDataDirection.FromControlToDataSource)
                        {
                            if ((ToObject is IObserveable) == false)
                            {
                                DataSourceController.CallChangedFor(ToObject);
                            }
                            else
                            if ((ToObject as IObserveable).HasCalledForChange == false)
                            {
                                (ToObject as IObserveable).HasChanged = true;
                            }
                        }
                        res = true;
                    }
//					else
//						Debug.Warning ("MappedProperty.AssignValueToObject", "CopyPropertyValue not successful");
                }
                FromObject = null;
                ToObject   = null;
                return(res);
#endif
            }
        }
Example #3
0
        /// <summary>
        /// gets value from referenced Target
        /// </summary>
        /// <param name="aValue">
        /// Value to set <see cref="System.Object"/>
        /// </param>
        public void SetValue(object aValue)
        {
#if NEWCACHE
            if (Adaptor.FinalTarget is IObserveable)
            {
                (Adaptor.FinalTarget as IObserveable).ResetChangeCallCheckup();
            }

            if (Resolve() == true)
            {
                if (dataCache.SetValue(Adaptor.FinalTarget, Name, aValue) == true)
                {
                    if ((Adaptor.FinalTarget is IObserveable) == false)
                    {
                        DataSourceController.CallChangedFor(Adaptor.FinalTarget);
                    }
                    else
                    if ((Adaptor.FinalTarget as IObserveable).HasCalledForChange == false)
                    {
                        (Adaptor.FinalTarget as IObserveable).HasChanged = true;
                    }
                }
            }
#endif
#if OLDCACHE
            if (cached == false)
            {
                Name = name;
            }
            if ((cached == false) && (Adaptor.InheritedTarget == false))
            {
                return;
            }
            if (cached == false)
            {
                if (Adaptor.InheritedTarget == true)
                {
                    if (Resolve() == false)
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
            }

            if (Adaptor.FinalTarget is IObserveable)
            {
                (Adaptor.FinalTarget as IObserveable).ResetChangeCallCheckup();
            }

            if (ConnectionProvider.SetPropertyValue(Adaptor.FinalTarget, Info, aValue) == true)
            {
                if ((Adaptor.FinalTarget is IObserveable) == false)
                {
                    DataSourceController.CallChangedFor(Adaptor.FinalTarget);
                }
                else
                if ((Adaptor.FinalTarget as IObserveable).HasCalledForChange == false)
                {
                    (Adaptor.FinalTarget as IObserveable).HasChanged = true;
                }
            }
#endif
        }